diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-10-29 20:51:39 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-10-29 20:51:39 +0000 |
| commit | 66f0aff9b147ff767c4af714036a95c04487af2b (patch) | |
| tree | 9b26f80f3e22301613583d1be5c57ac1648ed5fc /src/main/java | |
| parent | 21f3b8e8f2b7777158defff501ec0747328afd09 (diff) | |
Extract typeCheckTypeExpression()
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index 1555b7e8..e0bc492b 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -717,8 +717,7 @@ public class TypeChecker { .map(untypedEffect -> typeCheckEffect(untypedEffect, context)); var typedReturnType = untyped.returnType() - .map(untypedReturnType -> typeCheckTypeLevelExpression( - TypeSets.META_TYPE, + .map(untypedReturnType -> typeCheckTypeExpression( untypedReturnType, context )); @@ -778,8 +777,7 @@ public class TypeChecker { TypeCheckerContext context ) { var positionalParams = untyped.params().positional().stream() - .map(param -> typeCheckTypeLevelExpression( - TypeSets.META_TYPE, + .map(param -> typeCheckTypeExpression( param, context ).value()) @@ -806,8 +804,7 @@ public class TypeChecker { .map(untypedEffect -> typeCheckEffect(untypedEffect, context).value()) .orElse(Effects.NONE); - var returnType = typeCheckTypeLevelExpression( - TypeSets.META_TYPE, + var returnType = typeCheckTypeExpression( untyped.returnType(), context ).value(); @@ -829,7 +826,7 @@ public class TypeChecker { ) { return new TypedParamNode( untyped.name(), - typeCheckTypeLevelExpression(TypeSets.META_TYPE, untyped.type(), context), + typeCheckTypeExpression(untyped.type(), context), untyped.source() ); } @@ -1050,7 +1047,7 @@ public class TypeChecker { return new TypedParamNode( untyped.name(), // TODO: handle param without type - typeCheckTypeLevelExpression(TypeSets.META_TYPE, untyped.type().orElseThrow(), context), + typeCheckTypeExpression(untyped.type().orElseThrow(), context), untyped.source() ); } @@ -1117,7 +1114,7 @@ public class TypeChecker { for (var untypedField : untyped.fields()) { var typedFieldNode = new TypedStructFieldDefinitionNode( untypedField.name(), - typeCheckTypeLevelExpression(TypeSets.META_TYPE, untypedField.type(), context), + typeCheckTypeExpression(untypedField.type(), context), untypedField.source() ); typedFieldNodes.add(typedFieldNode); @@ -1171,8 +1168,7 @@ public class TypeChecker { // TODO: restrict variants to structs. Do we allow other sum types? var variants = untyped.variants().stream() .map(untypedVariant -> { - var variantType = typeCheckTypeLevelExpression( - TypeSets.META_TYPE, + var variantType = typeCheckTypeExpression( untypedVariant, context ).value(); @@ -1203,6 +1199,13 @@ public class TypeChecker { }; } + private static TypedTypeLevelExpressionNode<Type> typeCheckTypeExpression( + UntypedTypeLevelExpressionNode untyped, + TypeCheckerContext context + ) { + return typeCheckTypeLevelExpression(TypeSets.META_TYPE, untyped, context); + } + @SuppressWarnings("unchecked") static <T extends TypeLevelValue> TypedTypeLevelExpressionNode<T> typeCheckTypeLevelExpression( TypeSetTypeLevelValue<T> valueType, @@ -1271,8 +1274,7 @@ public class TypeChecker { TypeCheckerContext context ) { var elementTypes = untyped.elements().stream() - .map(elementType -> typeCheckTypeLevelExpression( - TypeSets.META_TYPE, + .map(elementType -> typeCheckTypeExpression( elementType, context ).value()) |
