From d310a8cf9487f253fbc4152d182dfdef460aeb6d Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 27 Apr 2016 21:56:02 +0100 Subject: Read return statements without value --- .../org/zwobble/couscous/frontends/java/JavaStatementReader.java | 5 ++++- .../org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src') 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 e75585f..6b71684 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java @@ -93,7 +93,10 @@ class JavaStatementReader { } private StatementNode readReturnStatement(ReturnStatement statement) { - return ReturnNode.returns(readExpression(returnType.get(), statement.getExpression())); + ExpressionNode value = statement.getExpression() == null + ? LiteralNode.UNIT + : readExpression(returnType.get(), statement.getExpression()); + return ReturnNode.returns(value); } private StatementNode readThrowStatement(ThrowStatement statement) { 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 35756f5..d455301 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 @@ -42,6 +42,12 @@ import static org.zwobble.couscous.util.ExtraLists.list; import static org.zwobble.couscous.util.ExtraSets.set; public class JavaReaderTests { + @Test + public void canReadReturnWithoutValue() { + StatementNode statement = readStatement("void", "return;"); + assertEquals(statement, returns(LiteralNode.UNIT)); + } + @Test public void canDeclareAndReferenceLocalVariables() { List statements = readStatements("int", "int x = 4; return x;"); -- cgit v1.2.3