From 21a58ffb202531d6ac74702648ad1c168f279a6d Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Sun, 18 Apr 2021 17:25:03 -0700 Subject: 12.5 This --- src/com/craftinginterpreters/lox/Resolver.java | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/com/craftinginterpreters/lox/Resolver.java') 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, Stmt.Visitor { 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; } @@ -154,6 +159,12 @@ class Resolver implements Expr.Visitor, Stmt.Visitor { return null; } + @Override + public Void visitThisExpr(Expr.This expr) { + resolveLocal(expr, expr.keyword); + return null; + } + @Override public Void visitLogicalExpr(Expr.Logical expr) { resolve(expr.left); -- cgit v1.2.3-54-g00ecf