From e68b3036f7b68e84a7b3199e5c610253bbb55456 Mon Sep 17 00:00:00 2001 From: ctsk <9384305+ctsk@users.noreply.github.com> Date: Tue, 11 Oct 2022 12:12:32 +0200 Subject: [PATCH] [jlox] Resolve superclasses --- jlox/lox/src/main/java/xyz/ctsk/lox/Resolver.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/jlox/lox/src/main/java/xyz/ctsk/lox/Resolver.java b/jlox/lox/src/main/java/xyz/ctsk/lox/Resolver.java index b98fbeb..d38604e 100644 --- a/jlox/lox/src/main/java/xyz/ctsk/lox/Resolver.java +++ b/jlox/lox/src/main/java/xyz/ctsk/lox/Resolver.java @@ -1,10 +1,7 @@ package xyz.ctsk.lox; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Stack; +import java.util.*; public class Resolver implements Expr.Visitor, Stmt.Visitor { private final Interpreter interpreter; @@ -91,6 +88,14 @@ public class Resolver implements Expr.Visitor, Stmt.Visitor { currentClass = ClassType.CLASS; declare(stmt.name()); define(stmt.name()); + + if (stmt.superclass() != null) { + if (stmt.name().lexeme().equals(stmt.superclass().name().lexeme())) { + Lox.error(stmt.superclass().name(), "A class can't inherit from itself."); + } + resolve(stmt.superclass()); + } + beginScope(); scopes.peek().put("this", true);