From 535f06f5cd2df5e45969b3aed61c2332e37f770d Mon Sep 17 00:00:00 2001 From: "Konstantin.Nisht" Date: Thu, 11 Jul 2019 17:48:49 +0300 Subject: [PATCH] IDEA-217978 Failure of resolving DGM methods on bounded type parameters GitOrigin-RevId: badb61f5dfbbc8b4100ce9b50e0ba6fcb21d270b --- .../plugins/groovy/lang/resolve/ResolveUtil.java | 6 ++++-- .../plugins/groovy/lang/resolve/ResolveMethodTest.groovy | 9 +++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java index 2f9d0fa55fb6..a5d989fe4c36 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java @@ -262,8 +262,10 @@ public class ResolveUtil { private static void collectSuperTypes(PsiType type, Set visited, Project project) { String qName = rawCanonicalText(type); - if (!visited.add(qName)) { - return; + if (!(type instanceof PsiClassType && ((PsiClassType)type).resolve() instanceof PsiTypeParameter)) { + if (!visited.add(qName)) { + return; + } } final PsiType[] superTypes = type.getSuperTypes(); diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy index 87733eb22d83..70a9427e7573 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy @@ -2376,4 +2376,13 @@ def foo(Object[] o) {} ''', GrMethod assert method.parameterList.parameters.first().type.equalsToText('java.util.List') } + + void 'test IDEA-217978'() { + def method = resolveByText '''\ +def > void foo(T a) { + a.every {true} +} +''', GrGdkMethod + assert method.staticMethod.name == "every" + } }