getVariable method

FutureOr<ASTVariable?> getVariable(
  1. String name,
  2. bool allowClassFields
)

Returns an ASTVariable of name in this context.

  • allowClassFields if true allows class fields.

Implementation

FutureOr<ASTVariable?> getVariable(String name, bool allowClassFields) {
  if (name == 'this') {
    var obj = getClassInstance();
    if (obj != null) {
      return ASTRuntimeVariable(obj.type, name, obj);
    }
  }

  var variable = _variables[name];
  if (variable != null) return variable;

  if (allowClassFields) {
    var obj = getClassInstance();
    if (obj != null) {
      if (obj is ASTClassInstance) {
        var fieldValue = obj.clazz
            .getInstanceFieldValue(this, ASTRunStatus.dummy, obj, name);
        return fieldValue.resolveMapped((v) {
          if (v != null) {
            return ASTRuntimeVariable(v.type, name, v);
          }
          return parent?.getVariable(name, allowClassFields);
        });
      }
    }
  }

  return parent?.getVariable(name, allowClassFields);
}