From d94641005c2b35800ee4499d2c17ba06579dabe6 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 25 Dec 2023 11:47:18 +0000 Subject: Add type substitution for function types --- .../java/org/shedlang/compiler/types/TypeSubstitution.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 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 e08b859e..7f86b3ef 100644 --- a/src/main/java/org/shedlang/compiler/types/TypeSubstitution.java +++ b/src/main/java/org/shedlang/compiler/types/TypeSubstitution.java @@ -13,9 +13,16 @@ public class TypeSubstitution { throw new UnsupportedOperationException("TODO"); } - case FunctionType functionType -> { - throw new UnsupportedOperationException("TODO"); - } + case FunctionType functionType -> new FunctionType( + functionType.positionalParams().stream() + .map(param -> substitute(param, map)) + .toList(), + functionType.namedParams().stream() + .map(param -> new NamedParam(param.name(), substitute(param.type(), map))) + .toList(), + functionType.effect(), + substitute(functionType.returnType(), map) + ); case IntType intType -> type; -- cgit v1.2.3