From 2e95615121d6bc45e0864292fb9fba1f7a946fda Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Wed, 4 Jun 2014 11:28:51 +0200 Subject: [PATCH] Groovy: don't use type.getCanonicalText() to infer type qualified name since it can lead to inferring of type parameters and wasting time --- .../GrReferenceExpressionImpl.java | 10 +++--- .../statements/expressions/TypesUtil.java | 32 +++++++++++++------ .../groovy/lang/resolve/ResolveUtil.java | 16 +++++++--- .../highlighting/GrAssignabilityTest.groovy | 2 ++ .../CodeBlockGenerationTest.groovy | 5 ++- 5 files changed, 45 insertions(+), 20 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java index d0aff5e205b8..40589065654d 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java @@ -108,10 +108,12 @@ public class GrReferenceExpressionImpl extends GrReferenceElementImpl result = cache.get(key); if (result == null) { @@ -388,10 +391,13 @@ public class ResolveUtil { @NotNull private static String rawCanonicalText(@NotNull PsiType type) { - final String result = type.getCanonicalText(); - final int i = result.indexOf('<'); - if (i > 0) return result.substring(0, i); - return result; + if (type instanceof PsiClassType) { + String qname = TypesUtil.getQualifiedName(type); + if (qname != null) { + return qname; + } + } + return TypeConversionUtil.erasure(type).getCanonicalText(); } public static GroovyPsiElement resolveProperty(GroovyPsiElement place, String name) { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GrAssignabilityTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GrAssignabilityTest.groovy index 03ac29a17193..668af1ca2cbf 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GrAssignabilityTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GrAssignabilityTest.groovy @@ -31,10 +31,12 @@ class GrAssignabilityTest extends GrHighlightingTestBase { public void testIncompatibleTypesAssignments() { doTest(); } public void testDefaultMapConstructorNamedArgs() { + addBigDecimal() doTest(new GroovyConstructorNamedArgumentsInspection()); } public void testDefaultMapConstructorNamedArgsError() { + addBigDecimal() doTest(new GroovyConstructorNamedArgumentsInspection()); } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy index f6e52759ee23..07dddce977a7 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy @@ -161,7 +161,10 @@ public final class Matcher { void testArrayAccess() { doTest() } - void testCastWithEquality() { doTest() } + void testCastWithEquality() { + addBigDecimal() + doTest() + } void testAsserts() { doTest() }