From fd8ec8d57f27a669e657d80c4534dd09dc922b4f Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 19 Dec 2024 18:39:32 +0000 Subject: Type check method parameters --- .../shedlang/compiler/typechecker/TypeChecker.java | 27 ++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'src/main/java') 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(); + 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) -- cgit v1.2.3