diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-03-02 11:20:57 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-03-02 11:20:57 +0000 |
| commit | a3887cd8bd6acedca45a1e76e48d1d0ed9b63942 (patch) | |
| tree | 58666fe12f128bbd147f98318cf2e1ab02678f59 /src/main/java | |
| parent | 9bace82acaf0ef7ec4c83203c262544f3dd7cae2 (diff) | |
Include type-level params in TypedFunctionSignatureNode
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/ast/typed/TypedFunctionSignatureNode.java | 7 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 6 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedFunctionSignatureNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedFunctionSignatureNode.java index 276ccb9a..f5900768 100644 --- a/src/main/java/org/shedlang/compiler/ast/typed/TypedFunctionSignatureNode.java +++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedFunctionSignatureNode.java @@ -4,11 +4,15 @@ import org.pcollections.Empty; import org.pcollections.PVector; import org.shedlang.compiler.sources.Source; import org.shedlang.compiler.sources.Sources; -import org.shedlang.compiler.types.*; +import org.shedlang.compiler.types.Effect; +import org.shedlang.compiler.types.Type; +import org.shedlang.compiler.types.TypeParam; +import java.util.List; import java.util.Optional; public record TypedFunctionSignatureNode( + Optional<List<TypeParam>> typeLevelParams, TypedParamsNode params, Optional<TypedTypeLevelExpressionNode<Effect>> effect, Optional<TypedTypeLevelExpressionNode<Type>> returnType, @@ -31,6 +35,7 @@ public record TypedFunctionSignatureNode( ) { public TypedFunctionSignatureNode build() { return new TypedFunctionSignatureNode( + Optional.empty(), new TypedParamsNode(positionalParams, namedParams, Sources.NULL), effect, returnType, diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index cc8b799f..a2645a4b 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -1055,12 +1055,11 @@ public class TypeChecker { .map(untypedTypeLevelParams -> typeCheckTypeLevelParams( untypedTypeLevelParams, scope.orElseThrow() - )) - .orElse(List.of()); + )); // TODO: Add type level params to function body context = context.enterFunctionSignature( - typeLevelParams.stream() + typeLevelParams.orElse(List.of()).stream() .map(typeLevelParam -> Map.entry( typeLevelParam.name(), Variable.defined(Types.metaType(typeLevelParam), VariableType.PARAM) @@ -1082,6 +1081,7 @@ public class TypeChecker { )); return new TypedFunctionSignatureNode( + typeLevelParams, typedParams, typedEffect, typedReturnType, |
