hasResolvableGenerics method

bool hasResolvableGenerics()

Returns true if this type contains at least one generic type that can be resolved.

This method checks whether this ResolvableType has generic parameters that can be resolved to concrete types (not type variables or dynamic types).

Returns:

  • true if this type has at least one resolvable generic parameter
  • false if all generics are unresolvable or no generics exist

Example:

final concreteListType = ResolvableType.forClass(List<String>);
final genericListType = ResolvableType.forClass(List); // List<T> where T is unresolved

print(concreteListType.hasResolvableGenerics()); // true - String is resolvable
print(genericListType.hasResolvableGenerics()); // false - T is unresolvable

// Useful for determining if generic instantiation is possible
bool canInstantiateGenericType(ResolvableType type) {
  return type.hasResolvableGenerics() || !type.hasGenerics();
}

Implementation

bool hasResolvableGenerics() {
  if (this == NONE) return false;

  final generics = getGenerics();
  for (final generic in generics) {
    if (!generic._isUnresolvableTypeVariable() && !generic._isDynamicType()) {
      return true;
    }
  }
  return false;
}