From 65ad79ba84a6f76c3713ed40b40cd5d9017c79eb Mon Sep 17 00:00:00 2001 From: "peter.gromov" Date: Sat, 13 Nov 2010 19:03:54 +0300 Subject: [PATCH] some type parameters don't have superclasses (EA-23486) --- .../plugins/groovy/lang/resolve/ResolveUtil.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java index 1fdd5d3ee2df..930e9ecbc25c 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java @@ -197,7 +197,7 @@ public class ResolveUtil { return type; } - public static Map getAllSuperTypes(PsiType base, final Project project) { + public static Map getAllSuperTypes(@NotNull PsiType base, final Project project) { final Map> cache = CachedValuesManager.getManager(project).getCachedValue(project, new CachedValueProvider>>() { @Override @@ -209,9 +209,14 @@ public class ResolveUtil { final PsiClass cls = PsiUtil.resolveClassInType(base); //noinspection ConstantConditions - String key = cls instanceof PsiTypeParameter - ? cls.getName() + cls.getSuperClass().getName() - : TypeConversionUtil.erasure(base).getCanonicalText(); + String key; + if (cls instanceof PsiTypeParameter) { + final PsiClass superClass = cls.getSuperClass(); + key = cls.getName() + (superClass == null ? CommonClassNames.JAVA_LANG_OBJECT : superClass.getName()); + } + else { + key = TypeConversionUtil.erasure(base).getCanonicalText(); + } if (key == null) key = ""; Map result = cache.get(key); if (result == null) {