set method

  1. @override
void set(
  1. String memberName,
  2. Object? value, [
  3. InterpreterVisitor? visitor
])
override

Sets a property of this value.

Implementation

@override
void set(String memberName, Object? value, [InterpreterVisitor? visitor]) {
  Logger.debug(
      "[EnumValue.set] called for '$this.$memberName' with value: $value");
  // 1. Check instance setters defined on the enum
  final setter = parentEnum.setters[memberName];
  if (setter != null) {
    // Call the setter, binding `this`
    setter.bind(this).call(visitor!, [value], {});
    return;
  }

  // 2. Set instance field specific to this enum value
  // Should only allow setting fields declared in the enum? Dart enums usually have final fields.
  // For now, allow setting for flexibility, like InterpretedInstance.
  _fields[memberName] = value;
}