resolveType method

  1. @override
FutureOr<ASTType> resolveType(
  1. VMContext? context
)
override

Implementation

@override
FutureOr<ASTType> resolveType(VMContext? context) {
  final associatedNode = _associatedNode;

  if (associatedNode != null) {
    return associatedNode.resolveType(context);
  }

  if (context == null) {
    var parentNode = _parentNode;
    if (parentNode != null) {
      var node = parentNode.getNodeIdentifier(name, requester: this);

      if (node is ASTTypedNode) {
        var typedNode = node as ASTTypedNode;
        var t = typedNode.resolveType(null);
        if (t is ASTType) return t;
      }
    }

    return ASTTypeDynamic.instance;
  }

  return context.getVariable(name, false).resolveMapped((variable) {
    return variable?.resolveType(context) ?? ASTTypeDynamic.instance;
  });
}