aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-01-12 17:41:42 +0000
committerMichael Williamson <mike@zwobble.org>2024-01-12 17:41:42 +0000
commit22b9cdfb83afc9b3e7e2ddb1de3e4cdd380858a1 (patch)
treed0d15893a92e425e7ce66fd5c275b6e56eec8379 /src/main/java
parent2d3d2c5f27a38c25e6d697c8635c38655f1a9728 (diff)
Extract substituteFunctionType()
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/types/TypeSubstitution.java29
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