bool ASTType::resolveType(CompileContext& context, const ASTTypeVariables* ptypevariables) { if ( ptypevariables != NULL ) { const ASTTypeVariable* ptypevariable = ptypevariables->find(mObjectName); if ( ptypevariable != NULL ) { mKind = ASTType::eGeneric; mpTypeVariable = ptypevariable; return true; } } if ( mKind == eObject ) { for ( int index = 0; index < mTypeArguments.size(); index++ ) { if ( !mTypeArguments[index].resolveType(context, ptypevariables) ) { return false; } } mpObjectClass = &context.resolveClass(mObjectName); } else if ( mKind == eArray ) { mpObjectClass = &context.resolveClass(UTEXT("system.InternalArray")); return mpArrayType->resolveType(context, ptypevariables); } else if ( mKind == eString ) { mpObjectClass = &context.resolveClass(UTEXT("system.InternalString")); } return true; }