resolve method
Implementation
@override
HTType resolve(HTDeclarationNamespace namespace) {
if (_isResolved) return _resolvedType ?? this;
assert(id != null);
assert(klass == null);
HTDeclarationNamespace nsp = namespace;
if (namespacesWithin.isNotEmpty) {
for (final id in namespacesWithin) {
nsp = nsp.memberGet(id, from: namespace.fullName, isRecursive: true);
}
}
var type = nsp.memberGet(id!, from: namespace.fullName, isRecursive: true);
if (type is HTType) {
_resolvedType = type.resolve(nsp);
} else if (type is HTTypeAliasDeclaration) {
type.resolve();
_resolvedType = type.declType;
} else if (type is HTClassDeclaration) {
_resolvedType = HTNominalType(
klass: type,
typeArgs: typeArgs.map((e) => e.resolve(nsp)).toList(),
isNullable: isNullable,
);
} else {
throw HTError.notType(id!);
}
_isResolved = true;
return _resolvedType!;
}