diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-11 21:33:25 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-11 21:33:25 +0000 |
| commit | a34a00ba19f6ffb61762da4629b53b8a633f9d17 (patch) | |
| tree | 6ae34a92c0dfe9a24df0b7e90da2da263a61f708 /src/main/java/org/zwobble/couscous/interpreter/values/StaticReceiverValue.java | |
| parent | 6d02b3e3e6f8da9837a46efda4733bdd89e38aaf (diff) | |
Implement static constructor and fields in interpreter
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/values/StaticReceiverValue.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/interpreter/values/StaticReceiverValue.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/StaticReceiverValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/StaticReceiverValue.java index f7ce1f6..9844e33 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/StaticReceiverValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/StaticReceiverValue.java @@ -2,18 +2,39 @@ package org.zwobble.couscous.interpreter.values; import org.zwobble.couscous.ast.MethodSignature; import org.zwobble.couscous.interpreter.Environment; +import org.zwobble.couscous.interpreter.Executor; import java.util.List; public class StaticReceiverValue implements ReceiverValue { private final ConcreteType type; + private final InterpreterFields fields; public StaticReceiverValue(ConcreteType type) { this.type = type; + this.fields = new InterpreterFields(type); } @Override public InterpreterValue callMethod(Environment environment, MethodSignature signature, List<InterpreterValue> arguments) { return type.callStaticMethod(environment, signature, arguments); } + + @Override + public InterpreterValue getField(String fieldName) { + return fields.getField(fieldName); + } + + @Override + public void setField(String fieldName, InterpreterValue value) { + fields.setField(fieldName, value); + } + + public void callStaticConstructor(Environment environment) { + Executor.exec(environment, type.getStaticConstructor()); + } + + public InterpreterValue callConstructor(Environment environment, List<InterpreterValue> arguments) { + return type.callConstructor(environment, arguments); + } } |
