diff options
Diffstat (limited to 'checker/src')
| -rw-r--r-- | checker/src/main/java/lv/enes/orang/checker/Checker.java | 8 |
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; |