diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-01-12 17:41:42 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-01-12 17:41:42 +0000 |
| commit | 22b9cdfb83afc9b3e7e2ddb1de3e4cdd380858a1 (patch) | |
| tree | d0d15893a92e425e7ce66fd5c275b6e56eec8379 /src/main/java | |
| parent | 2d3d2c5f27a38c25e6d697c8635c38655f1a9728 (diff) | |
Extract substituteFunctionType()
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 |
