diff options
Diffstat (limited to 'src/com/craftinginterpreters/lox/Resolver.java')
-rw-r--r-- | src/com/craftinginterpreters/lox/Resolver.java | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/com/craftinginterpreters/lox/Resolver.java b/src/com/craftinginterpreters/lox/Resolver.java index cda0f60..dc7332b 100644 --- a/src/com/craftinginterpreters/lox/Resolver.java +++ b/src/com/craftinginterpreters/lox/Resolver.java @@ -46,6 +46,14 @@ class Resolver implements Expr.Visitor<Void>, Stmt.Visitor<Void> { declare(stmt.name); define(stmt.name); + if (stmt.superclass != null && stmt.name.lexeme.equals(stmt.superclass.name.lexeme)) { + Lox.error(stmt.superclass.name, "A class can't inherit from itself."); + } + + if (stmt.superclass != null) { + resolve(stmt.superclass); + } + beginScope(); scopes.peek().put("this", true); |