diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-25 11:47:18 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-25 12:07:37 +0000 |
| commit | d94641005c2b35800ee4499d2c17ba06579dabe6 (patch) | |
| tree | f38132ca76f995a9d41e22f9b3ae3d7accfa6886 /src/main/java | |
| parent | 32420dc979cfeaa905f78b84f43b58af09ea3984 (diff) | |
Add type substitution for function types
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; |
