From 1fd741f7d5019b929affd29741b5ce92d7993f0f Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Thu, 22 Aug 2024 22:04:14 +0800 Subject: Fix bug in checker that made it not execute and made ArgSpec less likely to cause accidental errors. --- checker/src/main/java/lv/enes/orang/checker/Checker.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'checker/src/main/java/lv') diff --git a/checker/src/main/java/lv/enes/orang/checker/Checker.java b/checker/src/main/java/lv/enes/orang/checker/Checker.java index 446d3f1..14604b8 100644 --- a/checker/src/main/java/lv/enes/orang/checker/Checker.java +++ b/checker/src/main/java/lv/enes/orang/checker/Checker.java @@ -58,7 +58,9 @@ public class Checker implements ExpressionVisitor, State if (definitions.hasDefinition(def.name())) { throw new CheckerException(STR."Top-level definition '\{def.name()}' redefined!"); } - return new Checker(ImmutableScope.of(definitions, def.name(), true)); + var ch = new Checker(ImmutableScope.of(definitions, def.name(), true)); + ch.visit(def.body()); + return ch; } @Override @@ -79,7 +81,9 @@ public class Checker implements ExpressionVisitor, State public Void visitFnExpression(FnExpression expr) throws CheckerException { var args = new HashMap(); for (var arg : expr.args()) { - args.put(arg.name, true); + if (arg instanceof ArgSpec.Named(String name)) { + args.put(name, true); + } } new Checker(ImmutableScope.of(definitions, args)).visit(expr.body()); return null; -- cgit v1.2.3