diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-12-19 18:39:32 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-12-19 18:39:32 +0000 |
| commit | fd8ec8d57f27a669e657d80c4534dd09dc922b4f (patch) | |
| tree | 6c20fc7e01716b7caa28864cfa1404ce157a6d71 /src/main/java | |
| parent | 69d904e54d413e58ee854de474fbd82d3e94a81e (diff) | |
Type check method parameters
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 27 |
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) |
