aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-19 18:39:32 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-19 18:39:32 +0000
commitfd8ec8d57f27a669e657d80c4534dd09dc922b4f (patch)
tree6c20fc7e01716b7caa28864cfa1404ce157a6d71 /src/main/java
parent69d904e54d413e58ee854de474fbd82d3e94a81e (diff)
Type check method parameters
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
index f525a809..d6b8b813 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
@@ -865,18 +865,21 @@ public class TypeChecker {
param.source()
);
- var positionalParams = typedSignature.params().positional().stream()
- .map(typedParamNode -> {
- // TODO: check that type is not present
- return thisType
- .map(type -> new PartialFunctionSignature.Param(
- typedParamNode.name(),
- type,
- typedParamNode.source()
- ))
- .orElseGet(() -> typedParamNodeToParam.apply(typedParamNode));
- })
- .toList();
+ var positionalParams = new ArrayList<PartialFunctionSignature.Param>();
+ for (var paramIndex = 0; paramIndex < typedSignature.params().positional().size(); paramIndex++) {
+ var typedParamNode = typedSignature.params().positional().get(paramIndex);
+ var currentParamIndex = paramIndex;
+ var paramType = thisType
+ .filter(type -> currentParamIndex == 0)
+ // TODO: check that explicit type is not present
+ .map(type -> new PartialFunctionSignature.Param(
+ typedParamNode.name(),
+ type,
+ typedParamNode.source()
+ ))
+ .orElseGet(() -> typedParamNodeToParam.apply(typedParamNode));
+ positionalParams.add(paramType);
+ }
var namedParams = typedSignature.params().named().stream()
.map(typedParamNodeToParam)