aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-11-14 17:18:57 +0000
committerMichael Williamson <mike@zwobble.org>2015-11-14 17:18:57 +0000
commit4c9a1c8d062c849e34ce0176e60b5cccca65c127 (patch)
treee7cbbf81554e76db6724ab7c09cfa625f20312a5 /src/test/java/org
parent196321f77a224909bcda8bed834a9fee4265a8df (diff)
Handle boxing correctly in compound assignments
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java38
1 files changed, 38 insertions, 0 deletions
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 6f116cc..c08035f 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
@@ -380,6 +380,44 @@ public class JavaReaderTests {
}
@Test
+ public void rightOperandOfCompoundAssignmentsIsUnboxedIfNecessary() {
+ ClassNode classNode = readClass(
+ "public void go(int left, Integer right) {" +
+ " left += right;" +
+ "}");
+
+ MethodNode method = classNode.getMethods().get(0);
+ FormalArgumentNode left = method.getArguments().get(0);
+ FormalArgumentNode right = method.getArguments().get(1);
+ ExpressionStatementNode statement = (ExpressionStatementNode)
+ classNode.getMethods().get(0).getBody().get(0);
+ assertEquals(
+ assign(
+ reference(left),
+ integerAdd(reference(left), unboxInt(reference(right)))),
+ statement.getExpression());
+ }
+
+ @Test
+ public void leftOperandOfCompoundAssignmentsIsUnboxedIfNecessary() {
+ ClassNode classNode = readClass(
+ "public void go(Integer left, int right) {" +
+ " left += right;" +
+ "}");
+
+ MethodNode method = classNode.getMethods().get(0);
+ FormalArgumentNode left = method.getArguments().get(0);
+ FormalArgumentNode right = method.getArguments().get(1);
+ ExpressionStatementNode statement = (ExpressionStatementNode)
+ classNode.getMethods().get(0).getBody().get(0);
+ assertEquals(
+ assign(
+ reference(left),
+ boxInt(integerAdd(unboxInt(reference(left)), reference(right)))),
+ statement.getExpression());
+ }
+
+ @Test
public void canReadPrefixDecrement() {
ClassNode classNode = readClass(
"public void go(int value) {" +