diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-14 17:18:57 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-14 17:18:57 +0000 |
| commit | 4c9a1c8d062c849e34ce0176e60b5cccca65c127 (patch) | |
| tree | e7cbbf81554e76db6724ab7c09cfa625f20312a5 /src/test | |
| parent | 196321f77a224909bcda8bed834a9fee4265a8df (diff) | |
Handle boxing correctly in compound assignments
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java | 38 |
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) {" + |
