diff --git a/plugins/groovy/resources/standardDsls/defaultMethods.gdsl b/plugins/groovy/resources/standardDsls/defaultMethods.gdsl index a2378adb9d27..13a26592035b 100644 --- a/plugins/groovy/resources/standardDsls/defaultMethods.gdsl +++ b/plugins/groovy/resources/standardDsls/defaultMethods.gdsl @@ -25,6 +25,7 @@ import static standardDsls.Constants.STRING interface Constants { String NUMBER = "java.lang.Number" String STRING = "java.lang.String" + String WILDCARD_PREFIX = "? extends " } def extractTypeParameter(def typeText) { @@ -32,8 +33,13 @@ def extractTypeParameter(def typeText) { final int end = typeText.lastIndexOf('>') if (start < 0) return null - if (end < 0) return typeText.substring(start + 1) - return typeText.substring(start + 1, end); + + String componentType = end < 0 ? typeText.substring(start + 1) : typeText.substring(start + 1, end) + if (componentType.startsWith(Constants.WILDCARD_PREFIX)) { + componentType = componentType.substring(Constants.WILDCARD_PREFIX.size()) + } + + return componentType; } def constructElementTypeArg(def psiType) { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java index a72b9869e997..7d9990e25f5c 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java @@ -346,6 +346,10 @@ public class GroovyHighlightingTest extends LightCodeInsightFixtureTestCase { doTest(new GroovyResultOfAssignmentUsedInspection()); } + public void testGdslWildcardTypes() { + myFixture.configureByText("a.groovy", "List l = []; l.get(1)"); + myFixture.checkHighlighting(true, false, false); + } public void testThisTypeInStaticContext() { doTest(new GroovyAssignabilityCheckInspection());