From 0937f7e62a6538317f45d679110a15a05db0f610 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 10 Apr 2016 22:19:56 +0100 Subject: Improve support for reading method references --- .../couscous/frontends/java/JavaMethodReferenceReader.java | 5 +---- .../couscous/tests/frontends/java/InnerTypeReadingTests.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'src') 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 function = arg0 -> arg0.length();")), @@ -56,6 +56,15 @@ public class InnerTypeReadingTests { "java.util.function.Function function = String::length;"))); } + @Test + public void expressionInstanceMethodReferenceWithStaticReceiverAndSomeArgsIsReadAsLambda() { + assertEquals( + readTypes(generateMethodSource("void", + "java.util.function.BiPredicate function = (arg0, arg1) -> arg0.equals(arg1);")), + readTypes(generateMethodSource("void", + "java.util.function.BiPredicate function = Object::equals;"))); + } + @Test public void expressionConstructorReferenceWithStaticReceiverIsReadAsLambda() { assertEquals( -- cgit v1.2.3