diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-08-27 20:27:49 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-08-27 20:27:49 +0100 |
| commit | 623c8a2542cf071b59aebe4811d7d61c762db774 (patch) | |
| tree | c2b425688cdcd663b3bbc9f6384a4f0bca962695 /src/test/java | |
| parent | 96de72e5f761eb4bf07536f4dfe282e2e10a2081 (diff) | |
Check while loop body does not yield value
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/typechecker/TypeCheckerWhileTests.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerWhileTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerWhileTests.java index 209be5e1..5fc029b8 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerWhileTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerWhileTests.java @@ -2,6 +2,7 @@ package org.shedlang.compiler.typechecker; import org.junit.jupiter.api.Test; import org.shedlang.compiler.ast.untyped.Untyped; +import org.shedlang.compiler.typechecker.errors.LoopBodyCannotYieldValueError; import org.shedlang.compiler.typechecker.errors.UnexpectedTypeError; import org.shedlang.compiler.typechecker.typesets.TypeSets; import org.shedlang.compiler.types.Types; @@ -66,4 +67,20 @@ public class TypeCheckerWhileTests { )) )); } + + @Test + public void bodyCannotReturnValueFromBlock() { + var untyped = Untyped.while_( + Untyped.boolLiteral(true), + Untyped.block(List.of( + Untyped.blockReturn(Untyped.intLiteral(42)) + )) + ); + var context = TypeCheckerContext.EMPTY; + + assertThrows( + LoopBodyCannotYieldValueError.class, + () -> TypeChecker.typeCheckFunctionStatement(untyped, context) + ); + } } |
