diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/types/TypeSubstitution.java | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/main/java/org/shedlang/compiler/types/TypeSubstitution.java b/src/main/java/org/shedlang/compiler/types/TypeSubstitution.java index 302fab7a..385706ca 100644 --- a/src/main/java/org/shedlang/compiler/types/TypeSubstitution.java +++ b/src/main/java/org/shedlang/compiler/types/TypeSubstitution.java @@ -21,17 +21,7 @@ public class TypeSubstitution { case ConstructedSumType constructedType -> substituteConstructedSumType(constructedType, map); - case FunctionType functionType -> new FunctionType( - Optional.empty(), - functionType.positionalParams().stream() - .map(param -> substituteType(param, map)) - .toList(), - functionType.namedParams().stream() - .map(param -> new NamedParam(param.name(), substituteType(param.type(), map))) - .toList(), - functionType.effect(), - substituteType(functionType.returnType(), map) - ); + case FunctionType functionType -> substituteFunctionType(functionType, map); case IntType intType -> type; @@ -109,6 +99,23 @@ public class TypeSubstitution { ); } + private static FunctionType substituteFunctionType( + FunctionType functionType, + TypeSubstitutionMap map + ) { + return new FunctionType( + Optional.empty(), + functionType.positionalParams().stream() + .map(param -> substituteType(param, map)) + .toList(), + functionType.namedParams().stream() + .map(param -> new NamedParam(param.name(), substituteType(param.type(), map))) + .toList(), + functionType.effect(), + substituteType(functionType.returnType(), map) + ); + } + private static SimpleStructType substituteSimpleStructType( SimpleStructType type, TypeSubstitutionMap map |
