From 8ef169c241190b049fcc7e27d107fa6b45dde9ff Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 17 Apr 2016 13:49:11 +0100 Subject: Add parsing of throw statements --- .../zwobble/couscous/frontends/java/JavaStatementReader.java | 7 +++++++ .../zwobble/couscous/tests/frontends/java/JavaReaderTests.java | 10 ++++++++++ 2 files changed, 17 insertions(+) (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 83c10f4..0d46c4a 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java @@ -49,6 +49,9 @@ class JavaStatementReader { case ASTNode.RETURN_STATEMENT: return list(readReturnStatement((ReturnStatement)statement)); + case ASTNode.THROW_STATEMENT: + return list(readThrowStatement((ThrowStatement)statement)); + case ASTNode.EXPRESSION_STATEMENT: return list(readExpressionStatement((ExpressionStatement)statement)); @@ -87,6 +90,10 @@ class JavaStatementReader { return ReturnNode.returns(readExpression(returnType.get(), statement.getExpression())); } + private StatementNode readThrowStatement(ThrowStatement statement) { + return ThrowNode.throwNode(readExpressionWithoutBoxing(statement.getExpression())); + } + private StatementNode readExpressionStatement(ExpressionStatement statement) { return expressionStatement(readExpressionWithoutBoxing(statement.getExpression())); } 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 f3ce5a1..9bf8bcc 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 @@ -16,6 +16,7 @@ import static org.junit.Assert.assertThat; import static org.zwobble.couscous.ast.AnnotationNode.annotation; import static org.zwobble.couscous.ast.AssignmentNode.assign; import static org.zwobble.couscous.ast.AssignmentNode.assignStatement; +import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall; import static org.zwobble.couscous.ast.ExpressionStatementNode.expressionStatement; import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess; import static org.zwobble.couscous.ast.FormalTypeParameterNode.formalTypeParameter; @@ -27,6 +28,7 @@ import static org.zwobble.couscous.ast.Operations.boxInt; import static org.zwobble.couscous.ast.Operations.integerAdd; import static org.zwobble.couscous.ast.ReturnNode.returns; import static org.zwobble.couscous.ast.ThisReferenceNode.thisReference; +import static org.zwobble.couscous.ast.ThrowNode.throwNode; import static org.zwobble.couscous.ast.TypeCoercionNode.typeCoercion; import static org.zwobble.couscous.ast.VariableReferenceNode.reference; import static org.zwobble.couscous.ast.WhileNode.whileLoop; @@ -101,6 +103,14 @@ public class JavaReaderTests { method.getArguments(), contains(isFormalArgument("value", typeParameter(expectedMethodIdentifier, "T")))); } + + @Test + public void canReadThrowStatements() { + assertEquals( + throwNode( + constructorCall(ScalarType.of("java.lang.RuntimeException"), list())), + readStatement("void", "throw new RuntimeException();")); + } @Test public void canReadExpressionStatements() { -- cgit v1.2.3