toValue method

  1. @override
FutureOr<ASTValue<Object>?> toValue(
  1. VMContext context,
  2. Object? v
)
override

Implementation

@override
FutureOr<ASTValue<Object>?> toValue(VMContext context, Object? v) {
  if (v is ASTValueObject) return v;

  if (v is ASTValueNull) {
    return null;
  }

  if (v is ASTValueVoid) {
    throw StateError("Can't resolve 'void' to 'Object': $v");
  }

  if (v is ASTValue) {
    return v.resolve(context).resolveMapped((resolved) {
      if (resolved is! ASTValue<Object>) {
        return resolved.getValue(context).resolveMapped((vDyn) {
          return ASTValueObject(vDyn);
        });
      }
      return resolved;
    });
  }

  return v != null ? ASTValueObject(v) : null;
}