Skip to content

Commit 267a782

Browse files
committed
GROOVY-10269
1 parent 904bb93 commit 267a782

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

base-test/org.eclipse.jdt.groovy.core.tests.compiler/src/org/eclipse/jdt/groovy/core/tests/xform/TypeCheckedTests.java

+31
Original file line numberDiff line numberDiff line change
@@ -3985,6 +3985,37 @@ public void testTypeChecked10254() {
39853985
runConformTest(sources, "42");
39863986
}
39873987

3988+
@Test
3989+
public void testTypeChecked10269() {
3990+
assumeTrue(isParrotParser());
3991+
3992+
//@formatter:off
3993+
String[] sources = {
3994+
"Main.groovy",
3995+
"import java.util.function.Consumer\n" +
3996+
"void foo(Integer y) {\n" +
3997+
"}\n" +
3998+
"void bar(Consumer<Integer> x) {\n" +
3999+
"}\n" +
4000+
"@groovy.transform.TypeChecked\n" +
4001+
"void test() {\n" +
4002+
" def baz = { Consumer<Integer> x -> }\n" +
4003+
" bar(this::foo)\n" +
4004+
" baz(this::foo)\n" +
4005+
"}\n" +
4006+
"test()\n",
4007+
};
4008+
//@formatter:on
4009+
4010+
runNegativeTest(sources,
4011+
"----------\n" +
4012+
"1. ERROR in Main.groovy (at line 10)\n" +
4013+
"\tbaz(this::foo)\n" +
4014+
"\t ^^^^^^^^^\n" +
4015+
"Groovy:The argument is a method reference, but the parameter type is not a functional interface\n" +
4016+
"----------\n");
4017+
}
4018+
39884019
@Test
39894020
public void testTypeChecked10280() {
39904021
//@formatter:off

base/org.codehaus.groovy30/src/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -4060,7 +4060,9 @@ private void inferMethodReferenceType(final ClassNode receiver, final ArgumentLi
40604060
methodReferenceParamIndexList.add(i);
40614061
}
40624062
}
4063-
4063+
// GRECLIPSE add -- GROOVY-10269
4064+
if (methodReferenceParamIndexList.isEmpty()) return;
4065+
// GRECLIPSE end
40644066
visitMethodCallArguments(receiver, new ArgumentListExpression(newArgumentExpressionList), true, selectedMethod);
40654067

40664068
for (Integer methodReferenceParamIndex : methodReferenceParamIndexList) {

base/org.codehaus.groovy40/src/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -3818,7 +3818,9 @@ private void inferMethodReferenceType(final ClassNode receiver, final ArgumentLi
38183818
methodReferenceParamIndexList.add(i);
38193819
}
38203820
}
3821-
3821+
// GRECLIPSE add -- GROOVY-10269
3822+
if (methodReferenceParamIndexList.isEmpty()) return;
3823+
// GRECLIPSE end
38223824
visitMethodCallArguments(receiver, args(newArgumentExpressionList), true, selectedMethod);
38233825

38243826
for (int index : methodReferenceParamIndexList) {

0 commit comments

Comments
 (0)