acceptsType method
Will return true if type
can be cast to this type.
Note: This is similar to Java isInstance
and isAssignableFrom
.
Implementation
bool acceptsType(ASTType type) {
if (type == this) return true;
if (type == ASTTypeGenericWildcard.instance) return true;
if (name != type.name) {
var typeSuperType = type.superType;
if (typeSuperType == null) return false;
if (!typeSuperType.acceptsType(this)) return false;
}
var generics = this.generics;
var typeGenerics = type.generics;
if (generics == null || generics.isEmpty) {
return typeGenerics == null || typeGenerics.isEmpty;
}
if (typeGenerics == null || typeGenerics.isEmpty) {
return false;
}
if (generics.length != typeGenerics.length) return false;
var genericsLength = generics.length;
for (var i = 0; i < genericsLength; ++i) {
var g = generics[i];
var tg = typeGenerics[i];
if (!g.acceptsType(tg)) {
return false;
}
}
return true;
}