summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/parser.cc2
-rw-r--r--src/resolve.cc14
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;
+ }
}
}