From e217e3bb84139906d2e5658e5eecf476b9fb7faf Mon Sep 17 00:00:00 2001 From: Victor Date: Sat, 12 Oct 2019 19:38:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=BB=D0=B5=D0=B9=20=D0=B2=20?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=D1=85=20=D1=87=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D1=83=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=8D=D0=BA=D0=B7=D0=B5=D0=BC=D0=BF=D0=BB=D1=8F=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/annimon/ownlang/lib/ClassInstanceValue.java | 9 +++++++++ .../ownlang/parser/ast/ContainerAccessExpression.java | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/src/main/java/com/annimon/ownlang/lib/ClassInstanceValue.java b/src/main/java/com/annimon/ownlang/lib/ClassInstanceValue.java index febcfa9..a0e2a4a 100644 --- a/src/main/java/com/annimon/ownlang/lib/ClassInstanceValue.java +++ b/src/main/java/com/annimon/ownlang/lib/ClassInstanceValue.java @@ -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; diff --git a/src/main/java/com/annimon/ownlang/parser/ast/ContainerAccessExpression.java b/src/main/java/com/annimon/ownlang/parser/ast/ContainerAccessExpression.java index d013717..6ee8305 100644 --- a/src/main/java/com/annimon/ownlang/parser/ast/ContainerAccessExpression.java +++ b/src/main/java/com/annimon/ownlang/parser/ast/ContainerAccessExpression.java @@ -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()); }