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.java7
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java10
2 files changed, 17 insertions, 0 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 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() {