aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-13 15:28:52 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-13 15:28:52 +0000
commit15e441ba197d5cf0ae45823439aaaecec7d5435e (patch)
treee92c7748d158e89c3869d299863c059a7a70ce58
parent7e3a4556f65d03a052c4e5abd165ff4e91da4e93 (diff)
Read if statements without else clause
-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(