diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-14 21:09:42 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-14 21:09:42 +0100 |
| commit | d024723fb80ed28e6eea333f83481397a0cba7ea (patch) | |
| tree | f230743734529e170fb63b8178d384979ff968f7 /src/test/java | |
| parent | 5b999386f081b1f7e5259e26ffd33ea85e3e7a2b (diff) | |
Type if expression properly
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIfTests.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIfTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIfTests.java index 796dd7c9..47a6cc22 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIfTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIfTests.java @@ -35,6 +35,27 @@ public class TypeCheckerIfTests { } @Test + public void whenBranchesHaveDifferentTypesThenTypeOfIfIsUnionOfBranchTypes() { + var untyped = Untyped.if_( + List.of( + Untyped.conditionalBranch( + Untyped.boolLiteral(true), + Untyped.block(List.of( + Untyped.blockReturn(Untyped.intLiteral(42)) + )) + ) + ), + Untyped.block(List.of( + Untyped.blockReturn(Untyped.stringLiteral("b")) + )) + ); + + var result = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + + assertThat(result.value().type(), equalTo(Types.TOP)); + } + + @Test public void whenConditionIsNotBoolThenErrorIsThrown() { var untyped = Untyped.if_( List.of( |
