aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-29 11:28:39 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-29 11:28:39 +0000
commit175395d22a4195c4021d2f0ff32c2d79d878dfab (patch)
tree9b23343459af70f80fa338b88c8647d7f43f7cc4 /src/main/java
parentcbdd489dc2212e802efea6563af6184b58b4eaed (diff)
Get type info for when expression in single expression
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java17
1 files changed, 10 insertions, 7 deletions
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<Type>();