aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/craftinginterpreters/lox/Resolver.java
diff options
context:
space:
mode:
authorGravatar Tom Willemse2021-04-18 17:25:03 -0700
committerGravatar Tom Willemse2021-04-18 17:25:03 -0700
commit21a58ffb202531d6ac74702648ad1c168f279a6d (patch)
treeed7f1b3e1b38242602ba08207d033dd485865d77 /src/com/craftinginterpreters/lox/Resolver.java
parent591caeb216128675ce6b8ddafccb09df7f522145 (diff)
downloadcrafting-interpreters-21a58ffb202531d6ac74702648ad1c168f279a6d.tar.gz
crafting-interpreters-21a58ffb202531d6ac74702648ad1c168f279a6d.zip
12.5 This
Diffstat (limited to 'src/com/craftinginterpreters/lox/Resolver.java')
-rw-r--r--src/com/craftinginterpreters/lox/Resolver.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/com/craftinginterpreters/lox/Resolver.java b/src/com/craftinginterpreters/lox/Resolver.java
index 649235a..f68e4dc 100644
--- a/src/com/craftinginterpreters/lox/Resolver.java
+++ b/src/com/craftinginterpreters/lox/Resolver.java
@@ -37,11 +37,16 @@ class Resolver implements Expr.Visitor<Void>, Stmt.Visitor<Void> {
declare(stmt.name);
define(stmt.name);
+ beginScope();
+ scopes.peek().put("this", true);
+
for (Stmt.Function method : stmt.methods) {
FunctionType declaration = FunctionType.METHOD;
resolveFunction(method, declaration);
}
+ endScope();
+
return null;
}
@@ -155,6 +160,12 @@ class Resolver implements Expr.Visitor<Void>, Stmt.Visitor<Void> {
}
@Override
+ public Void visitThisExpr(Expr.This expr) {
+ resolveLocal(expr, expr.keyword);
+ return null;
+ }
+
+ @Override
public Void visitLogicalExpr(Expr.Logical expr) {
resolve(expr.left);
resolve(expr.right);