diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index c7599722..f544e876 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -559,14 +559,14 @@ public class TypeChecker { var expression = expressionResult.value(); context = expressionResult.context(); - if (context.returnType().isEmpty()) { + var expectedReturnType = context.returnType().orElseThrow(() -> { // This should be syntactically impossible, but since we only have // one context type, we check for this possibility and throw a // reasonable error. - throw new CannotReturnOutsideOfFunction(untyped.source()); - } + return new CannotReturnOutsideOfFunction(untyped.source()); + }); - checkExpressionType(expression, context.returnType().get(), context); + checkExpressionType(expression, expectedReturnType, context); var typed = new TypedFunctionReturnNode(expression, untyped.source()); |
