mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Возможность изменения полей в классах через ссылку на экземпляр
This commit is contained in:
parent
b82596cd87
commit
e217e3bb84
@ -43,6 +43,15 @@ public class ClassInstanceValue implements 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
|
||||
public Object raw() {
|
||||
return null;
|
||||
|
@ -73,6 +73,10 @@ public final class ContainerAccessExpression implements Expression, Accessible {
|
||||
((MapValue) container).set(lastIndex, value);
|
||||
return value;
|
||||
|
||||
case Types.CLASS:
|
||||
((ClassInstanceValue) container).set(lastIndex, value);
|
||||
return value;
|
||||
|
||||
default:
|
||||
throw new TypeException("Array or map expected. Got " + container.type());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user