diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/types/TypeSubstitution.java | 13 |
1 files changed, 10 insertions, 3 deletions
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; |
