aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java5
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java12
2 files changed, 16 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
index 41629bd..fb40ed3 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
@@ -89,10 +89,13 @@ class JavaStatementReader {
}
private StatementNode readIfStatement(IfStatement statement) {
+ List<StatementNode> falseBranch = statement.getElseStatement() == null
+ ? list()
+ : readStatement(statement.getElseStatement());
return ifStatement(
readExpression(BooleanValue.REF, statement.getExpression()),
readStatement(statement.getThenStatement()),
- readStatement(statement.getElseStatement()));
+ falseBranch);
}
private List<StatementNode> readSwitchStatement(SwitchStatement switchStatement) {
diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
index d70f911..de659d3 100644
--- a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
@@ -590,6 +590,18 @@ public class JavaReaderTests {
}
@Test
+ public void canReadIfStatementsWithoutElse() {
+ assertEquals(
+ list(
+ ifStatement(
+ literal(true),
+ list(returns(literal(1))),
+ list()),
+ returns(literal(2))),
+ readStatements("int", "if (true) { return 1; } return 2;"));
+ }
+
+ @Test
public void canReadWhileLoops() {
assertEquals(
whileLoop(