From 175395d22a4195c4021d2f0ff32c2d79d878dfab Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 29 Dec 2023 11:28:39 +0000 Subject: Get type info for when expression in single expression --- .../org/shedlang/compiler/typechecker/TypeChecker.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index 89a2f926..73076a74 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -2052,12 +2052,16 @@ public class TypeChecker { var typedExpression = typedExpressionResult.value(); context = typedExpressionResult.context(); - if (!(typedExpression.type() instanceof SumType expressionType)) { - throw new WhenExpressionIsNotInstanceOfSumTypeError( - typedExpression.type(), - typedExpression.source() - ); - } + var expressionTypeInfo = switch (typedExpression.type()) { + case SumType expressionType -> + context.sumTypeInfo(expressionType, untyped.source()); + + default -> + throw new WhenExpressionIsNotInstanceOfSumTypeError( + typedExpression.type(), + typedExpression.source() + ); + }; var variableName = untyped.expression() instanceof UntypedReferenceNode expressionReference ? Optional.of(expressionReference.name()) @@ -2074,7 +2078,6 @@ public class TypeChecker { var typedCases = typedCasesResult.value(); context = typedCasesResult.context(); - var expressionTypeInfo = context.sumTypeInfo(expressionType, untyped.source()); var variantTypes = expressionTypeInfo.variants(); var handledVariantTypes = new HashSet(); -- cgit v1.2.3