value property

  1. @override
dynamic get value
override

Implementation

@override
dynamic get value {
  if (isExternal) {
    final externalClass = interpreter.fetchExternalClass(classId!);
    final externalValue = externalClass.memberGet(id!);
    return externalValue;
  } else {
    if (!_isInitialized) {
      if (ip != null) {
        initialize();
      } else {
        throw HTError.uninitialized(id!);
      }
    }
    return _value;
  }
}
  1. @override
set value (dynamic value)
override

Assign a new value to this variable.

Implementation

@override
set value(dynamic value) {
  if (!isMutable && _isInitialized) {
    throw HTError.immutable(id!);
  }
  // if (interpreter.config.checkTypeAnnotationAtRuntime) {
  //   if (declType != null) {
  //     // final resolvedType =
  //     //     declType!.isResolved ? declType : declType!.resolve(closure);
  //     final valueType = interpreter.typeof(value);
  //     if (valueType.isNotA(declType!)) {
  //       final err = HTError.assignType(
  //         id!,
  //         interpreter.lexicon.stringify(valueType),
  //         interpreter.lexicon.stringify(declType),
  //       );
  //       print(
  //           "hetu: (warning) - ${err.message} (at [${interpreter.currentFileName}:${interpreter.currentLine}:${interpreter.currentColumn}])");
  //     }
  //   }
  // }
  _value = value;
  _isInitialized = true;
}