diff options
author | 2021-04-18 17:25:03 -0700 | |
---|---|---|
committer | 2021-04-18 17:25:03 -0700 | |
commit | 21a58ffb202531d6ac74702648ad1c168f279a6d (patch) | |
tree | ed7f1b3e1b38242602ba08207d033dd485865d77 /src/com/craftinginterpreters/lox/Resolver.java | |
parent | 591caeb216128675ce6b8ddafccb09df7f522145 (diff) | |
download | crafting-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.java | 11 |
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); |