summaryrefslogtreecommitdiff
path: root/checker/src
diff options
context:
space:
mode:
authorGravatar Uko Kokņevičs2024-08-22 22:04:14 +0800
committerGravatar Uko Kokņevičs2024-08-22 22:04:14 +0800
commit1fd741f7d5019b929affd29741b5ce92d7993f0f (patch)
tree01aa4d15f44f6fd698767606e0d7b8b4d5877b46 /checker/src
parentSimplify build scripts (diff)
downloadorang-1fd741f7d5019b929affd29741b5ce92d7993f0f.tar.gz
orang-1fd741f7d5019b929affd29741b5ce92d7993f0f.tar.xz
orang-1fd741f7d5019b929affd29741b5ce92d7993f0f.zip
Fix bug in checker that made it not execute and made ArgSpec less likely to cause accidental errors.
Diffstat (limited to 'checker/src')
-rw-r--r--checker/src/main/java/lv/enes/orang/checker/Checker.java8
1 files changed, 6 insertions, 2 deletions
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<Void, CheckerException>, State
58 if (definitions.hasDefinition(def.name())) { 58 if (definitions.hasDefinition(def.name())) {
59 throw new CheckerException(STR."Top-level definition '\{def.name()}' redefined!"); 59 throw new CheckerException(STR."Top-level definition '\{def.name()}' redefined!");
60 } 60 }
61 return new Checker(ImmutableScope.of(definitions, def.name(), true)); 61 var ch = new Checker(ImmutableScope.of(definitions, def.name(), true));
62 ch.visit(def.body());
63 return ch;
62 } 64 }
63 65
64 @Override 66 @Override
@@ -79,7 +81,9 @@ public class Checker implements ExpressionVisitor<Void, CheckerException>, State
79 public Void visitFnExpression(FnExpression expr) throws CheckerException { 81 public Void visitFnExpression(FnExpression expr) throws CheckerException {
80 var args = new HashMap<String, Boolean>(); 82 var args = new HashMap<String, Boolean>();
81 for (var arg : expr.args()) { 83 for (var arg : expr.args()) {
82 args.put(arg.name, true); 84 if (arg instanceof ArgSpec.Named(String name)) {
85 args.put(name, true);
86 }
83 } 87 }
84 new Checker(ImmutableScope.of(definitions, args)).visit(expr.body()); 88 new Checker(ImmutableScope.of(definitions, args)).visit(expr.body());
85 return null; 89 return null;