From 8a74050419f547fb935c44b32b5ea5461b530eee Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Fri, 20 May 2016 21:34:56 +0300 Subject: [PATCH] [groovy] unwrap class type for static GDK methods before checking applicability (IDEA-156373) --- .../codeInspection/type/GroovyTypeCheckVisitor.java | 6 ++++-- .../lang/highlighting/GroovyHighlightingTest.groovy | 8 ++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/type/GroovyTypeCheckVisitor.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/type/GroovyTypeCheckVisitor.java index 733395ddcaca..92850d9a5ec9 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/type/GroovyTypeCheckVisitor.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/type/GroovyTypeCheckVisitor.java @@ -22,7 +22,6 @@ import com.intellij.openapi.util.Condition; import com.intellij.psi.*; import com.intellij.psi.impl.PsiSubstitutorImpl; import com.intellij.psi.tree.IElementType; -import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -380,7 +379,10 @@ public class GroovyTypeCheckVisitor extends BaseInspectionVisitor { }); } final PsiMethod staticMethod = ((GrGdkMethod)method).getStaticMethod(); - final PsiType qualifierType = info.getQualifierInstanceType(); + PsiType qualifierType = info.getQualifierInstanceType(); + if (method.hasModifierProperty(PsiModifier.STATIC)) { + qualifierType = ResolveUtil.unwrapClassType(qualifierType); + } //check methods processed by @Category(ClassWhichProcessMethod) annotation if (qualifierType != null && diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy index a2385a052c49..a9efb24f1520 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy @@ -1993,4 +1993,12 @@ class Main { } ''' } + + void 'test static GDK method applicable'() { + testHighlighting ''' +def doParse() { + Date.parse('dd.MM.yyyy', '01.12.2016') +} +''', GroovyAssignabilityCheckInspection + } }