From e6f463257720bee91a1b4954d97684dbb3398cbf Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 6 Oct 2015 16:24:37 +0100 Subject: Add support for constructors and fields --- .../org/zwobble/couscous/interpreter/Environment.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/interpreter/Environment.java') diff --git a/src/main/java/org/zwobble/couscous/interpreter/Environment.java b/src/main/java/org/zwobble/couscous/interpreter/Environment.java index 6da54ce..0bbc808 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/Environment.java +++ b/src/main/java/org/zwobble/couscous/interpreter/Environment.java @@ -19,16 +19,25 @@ import lombok.val; public class Environment { private final Project project; + private final Optional thisValue; private final Map stackFrame; - public Environment(Project project, Map> stackFrame) { + public Environment( + Project project, + Optional thisValue, + Map> stackFrame) { this.project = project; + this.thisValue = thisValue; this.stackFrame = stackFrame.entrySet() .stream() .collect(toMap( entry -> entry.getKey().getId(), entry -> VariableEntry.of(entry.getKey().getType(), entry.getValue()))); } + + public Optional getThis() { + return thisValue; + } public InterpreterValue get(int variableId) { checkVariableIsInScope(variableId); @@ -51,8 +60,8 @@ public class Environment { return project.findClass(className); } - public Environment withStackFrame(Map> stackFrame) { - return new Environment(project, stackFrame); + public Environment withStackFrame(Optional thisValue, Map> stackFrame) { + return new Environment(project, thisValue, stackFrame); } private void checkVariableIsInScope(int variableId) { -- cgit v1.2.3