Index: pkg/kernel/lib/interpreter/interpreter.dart |
diff --git a/pkg/kernel/lib/interpreter/interpreter.dart b/pkg/kernel/lib/interpreter/interpreter.dart |
index 73330c1b15e9da5f9b846f9085bad20bb465094f..121709d4145f5ff0dae14b8e7f6c6c501473b9b2 100644 |
--- a/pkg/kernel/lib/interpreter/interpreter.dart |
+++ b/pkg/kernel/lib/interpreter/interpreter.dart |
@@ -36,11 +36,17 @@ class Interpreter { |
} |
} |
+class Location { |
+ Value value; |
+ |
+ Location(this.value); |
+} |
+ |
class Binding { |
final VariableDeclaration variable; |
- Value value; |
+ final Location location; |
- Binding(this.variable, this.value); |
+ Binding(this.variable, this.location); |
} |
class Environment { |
@@ -70,17 +76,17 @@ class Environment { |
} |
Value lookup(VariableDeclaration variable) { |
- return lookupBinding(variable).value; |
+ return lookupBinding(variable).location.value; |
} |
void assign(VariableDeclaration variable, Value value) { |
assert(contains(variable)); |
- lookupBinding(variable).value = value; |
+ lookupBinding(variable).location.value = value; |
} |
void expand(VariableDeclaration variable, Value value) { |
assert(!contains(variable)); |
- bindings.add(new Binding(variable, value)); |
+ bindings.add(new Binding(variable, new Location(value))); |
} |
} |