From 22b9cdfb83afc9b3e7e2ddb1de3e4cdd380858a1 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 12 Jan 2024 17:41:42 +0000 Subject: Extract substituteFunctionType() --- .../shedlang/compiler/types/TypeSubstitution.java | 29 ++++++++++++++-------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'src/main/java') 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 -- cgit v1.2.3