resolve method
Implementation
@override
HTType resolve(HTDeclarationNamespace namespace) {
var type =
namespace.memberGet(id, from: namespace.fullName, isRecursive: true);
if (type is HTType && type.isResolved) {
return type;
} else if (type is HTAbstractTypeDeclaration) {
if (type is HTTypeAliasDeclaration) {
type = type.declType;
}
final resolvedTypeArgs = <HTType>[];
for (final arg in typeArgs) {
final resolved = arg.resolve(namespace);
resolvedTypeArgs.add(resolved);
}
if (type is HTClassDeclaration) {
return HTNominalType(type, typeArgs: resolvedTypeArgs);
} else if (type is HTFunctionType) {
return type;
} // TODO: interface type, union type, literal type etc...
else {
throw HTError.notType(id);
}
} else {
throw HTError.notType(id);
}
}