aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-10-25 22:02:47 +0100
committerMichael Williamson <mike@zwobble.org>2023-10-25 22:02:47 +0100
commit6ce6049bbbfb609cb4d1acde3f4a5549aa3af9fc (patch)
tree6d8ae7825ab8b4332c75a0ac5f60710f6b6cb124 /src/main/java
parentce0b25de9fa8f7423391357db75bd72ad6c9e7df (diff)
Check for duplicate named params in function type
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
index 3dd5e138..d7ad4627 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
@@ -651,6 +651,16 @@ public class TypeChecker {
})
.toList();
+ var seenParamNames = new HashSet<String>();
+ for (var untypedParamNode : untyped.params().named()) {
+ if (!seenParamNames.add(untypedParamNode.name())) {
+ throw new DuplicateVariableName(
+ untypedParamNode.name(),
+ untypedParamNode.source()
+ );
+ }
+ }
+
var effect = untyped.effect()
.map(untypedEffect -> typeCheckTypeLevelExpression(
TypeSets.EFFECT,