aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/craftinginterpreters/lox/Resolver.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/craftinginterpreters/lox/Resolver.java')
-rw-r--r--src/com/craftinginterpreters/lox/Resolver.java8
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);