diff options
-rw-r--r-- | src/parser.cc | 2 | ||||
-rw-r--r-- | src/resolve.cc | 14 |
2 files changed, 9 insertions, 7 deletions
diff --git a/src/parser.cc b/src/parser.cc index bd3f021e..1b8883de 100644 --- a/src/parser.cc +++ b/src/parser.cc @@ -42,7 +42,7 @@ void BaseParser::listElDef( String name ) TypeRef *elTr = TypeRef::cons( InputLoc(), TypeRef::ListEl, 0, objTr, 0 ); ObjectField *of = ObjectField::cons( InputLoc(), - ObjectField::UserFieldType, elTr, name ); + ObjectField::GenericElementType, elTr, name ); structVarDef( InputLoc(), of ); } diff --git a/src/resolve.cc b/src/resolve.cc index c6f45076..e1d9dba5 100644 --- a/src/resolve.cc +++ b/src/resolve.cc @@ -111,12 +111,14 @@ UniqueType *TypeRef::resolveTypeList( Compiler *pd ) ObjectField *listEl = 0; FieldList *fieldList = utValue->structEl->structDef->objectDef->fieldList; for ( FieldList::Iter f = *fieldList; f.lte(); f++, off++ ) { - UniqueType *fUT = f->value->typeRef->resolveType( pd ); - if ( fUT->typeId == TYPE_GENERIC && fUT->generic != 0 && - fUT->generic->typeId == GEN_LIST_EL ) - { - listEl = f->value; - break; + if ( f->value->type == ObjectField::GenericElementType ) { + UniqueType *fUT = f->value->typeRef->resolveType( pd ); + if ( fUT->typeId == TYPE_GENERIC && fUT->generic != 0 && + fUT->generic->typeId == GEN_LIST_EL ) + { + listEl = f->value; + break; + } } } |