diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-10 22:19:56 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-10 22:19:56 +0100 |
| commit | 0937f7e62a6538317f45d679110a15a05db0f610 (patch) | |
| tree | e912aa3ed70d0e21aeb9d24b9269fde0084d0f76 | |
| parent | 5bd0856f47e004c50edd450ce45d71848c837230 (diff) | |
Improve support for reading method references
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaMethodReferenceReader.java | 5 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/frontends/java/InnerTypeReadingTests.java | 11 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaMethodReferenceReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaMethodReferenceReader.java index 4930ee4..75d8162 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaMethodReferenceReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaMethodReferenceReader.java @@ -83,13 +83,10 @@ public class JavaMethodReferenceReader { } else { Expression left = expression.getExpression(); if (left instanceof SimpleName && ((SimpleName) left).resolveBinding().getKind() == IBinding.TYPE) { - if (arguments.size() != 1) { - throw new UnsupportedOperationException(); - } return methodCall( arguments.get(0), methodName, - list(), + arguments.subList(1, arguments.size()), type); } else { return methodCall( diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/InnerTypeReadingTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/InnerTypeReadingTests.java index 9901931..8f5c305 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/InnerTypeReadingTests.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/InnerTypeReadingTests.java @@ -48,7 +48,7 @@ public class InnerTypeReadingTests { } @Test - public void expressionInstanceMethodReferenceWithStaticReceiverIsReadAsLambda() { + public void expressionInstanceMethodReferenceWithStaticReceiverAndNoArgsIsReadAsLambda() { assertEquals( readTypes(generateMethodSource("void", "java.util.function.Function<String, Integer> function = arg0 -> arg0.length();")), @@ -57,6 +57,15 @@ public class InnerTypeReadingTests { } @Test + public void expressionInstanceMethodReferenceWithStaticReceiverAndSomeArgsIsReadAsLambda() { + assertEquals( + readTypes(generateMethodSource("void", + "java.util.function.BiPredicate<Object, Object> function = (arg0, arg1) -> arg0.equals(arg1);")), + readTypes(generateMethodSource("void", + "java.util.function.BiPredicate<Object, Object> function = Object::equals;"))); + } + + @Test public void expressionConstructorReferenceWithStaticReceiverIsReadAsLambda() { assertEquals( readTypes(generateMethodSource("void", |
