Возможность изменения полей в классах через ссылку на экземпляр

This commit is contained in:
Victor 2019-10-12 19:38:23 +03:00
parent b82596cd87
commit e217e3bb84
2 changed files with 13 additions and 0 deletions

View File

@ -43,6 +43,15 @@ public class ClassInstanceValue implements Value {
return thisMap.get(value); return thisMap.get(value);
} }
public void set(Value key, Value value) {
final Value v = thisMap.get(key);
if (v == null) {
throw new RuntimeException("Unable to add new field "
+ key.asString() + " to class " + className);
}
thisMap.set(key, value);
}
@Override @Override
public Object raw() { public Object raw() {
return null; return null;

View File

@ -73,6 +73,10 @@ public final class ContainerAccessExpression implements Expression, Accessible {
((MapValue) container).set(lastIndex, value); ((MapValue) container).set(lastIndex, value);
return value; return value;
case Types.CLASS:
((ClassInstanceValue) container).set(lastIndex, value);
return value;
default: default:
throw new TypeException("Array or map expected. Got " + container.type()); throw new TypeException("Array or map expected. Got " + container.type());
} }