Skip to content

Commit 51e7349

Browse files
committed
GROOVY-10036
1 parent eb77114 commit 51e7349

File tree

4 files changed

+27
-5
lines changed

4 files changed

+27
-5
lines changed

base-test/org.eclipse.jdt.groovy.core.tests.builder/src/org/eclipse/jdt/core/groovy/tests/search/DGMInferencingTests.java

+24-2
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,29 @@ public void testDGM11() {
171171
assertExprType(contents, "index", "java.lang.Integer");
172172
}
173173

174+
@Test
175+
public void testDGM11a() {
176+
//@formatter:off
177+
String contents =
178+
"def map = ['x'].<String,Object,String>collectEntries { [it, it.size()] }\n";
179+
//@formatter:on
180+
assertExprType(contents, "it", "java.lang.String");
181+
assertExprType(contents, "map", "java.util.Map<java.lang.String,java.lang.Object>");
182+
}
183+
184+
@Test // https://issues.apache.org/jira/browse/GROOVY-10036
185+
public void testDGM11b() {
186+
//@formatter:off
187+
String contents =
188+
"@groovy.transform.TypeChecked\n" +
189+
"void test() {\n" +
190+
" def map = ['x'].<String,Object,String>collectEntries { [it, it.size()] }\n" +
191+
"}\n";
192+
//@formatter:on
193+
assertExprType(contents, "it", "java.lang.String");
194+
assertExprType(contents, "map", "java.util.Map<java.lang.String,java.lang.Object>");
195+
}
196+
174197
@Test
175198
public void testDGM12() {
176199
//@formatter:off
@@ -469,8 +492,7 @@ public void testDGM42() {
469492
assertExprType(contents, "it", "java.lang.String");
470493
}
471494

472-
@Test @Ignore("ClosureParams states 'List<String>' or 'String[]', but " +
473-
"runtime allows for destructuring if number of elements fits into params")
495+
@Test @Ignore("ClosureParams states 'List<String>' or 'String[]', but runtime allows for destructuring if number of elements fits into params")
474496
public void testDGM43() {
475497
//@formatter:off
476498
String contents =

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -5794,7 +5794,7 @@ protected ClassNode inferReturnTypeGenerics(
57945794
} else {
57955795
argList.addExpression(arguments);
57965796
}
5797-
return inferReturnTypeGenerics(receiver, dgmMethod, argList);
5797+
return inferReturnTypeGenerics(receiver, dgmMethod, argList, explicitTypeHints); // GRECLIPSE edit -- GROOVY-10036
57985798
}
57995799
if (!isUsingGenericsOrIsArrayUsingGenerics(returnType)) return returnType;
58005800
if (getGenericsWithoutArray(returnType) == null) return returnType;

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -5583,7 +5583,7 @@ protected ClassNode inferReturnTypeGenerics(final ClassNode receiver, final Meth
55835583
} else {
55845584
args.addExpression(arguments);
55855585
}
5586-
return inferReturnTypeGenerics(receiver, dgm, args);
5586+
return inferReturnTypeGenerics(receiver, dgm, args, explicitTypeHints); // GRECLIPSE edit -- GROOVY-10036
55875587
}
55885588
Map<GenericsTypeName, GenericsType> resolvedPlaceholders = resolvePlaceHoldersFromDeclaration(receiver, getDeclaringClass(method, arguments), method, method.isStatic());
55895589
resolvePlaceholdersFromExplicitTypeHints(method, explicitTypeHints, resolvedPlaceholders);

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -5547,7 +5547,7 @@ protected ClassNode inferReturnTypeGenerics(final ClassNode receiver, final Meth
55475547
} else {
55485548
args.addExpression(arguments);
55495549
}
5550-
return inferReturnTypeGenerics(receiver, dgm, args);
5550+
return inferReturnTypeGenerics(receiver, dgm, args, explicitTypeHints); // GRECLIPSE edit -- GROOVY-10036
55515551
}
55525552
Map<GenericsTypeName, GenericsType> resolvedPlaceholders = resolvePlaceHoldersFromDeclaration(receiver, getDeclaringClass(method, arguments), method, method.isStatic());
55535553
resolvePlaceholdersFromExplicitTypeHints(method, explicitTypeHints, resolvedPlaceholders);

0 commit comments

Comments
 (0)