diff options
Diffstat (limited to 'java/java-psi-impl/src/com/intellij/psi/impl/InheritanceImplUtil.java')
-rw-r--r-- | java/java-psi-impl/src/com/intellij/psi/impl/InheritanceImplUtil.java | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/InheritanceImplUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/InheritanceImplUtil.java index 543c8a653651..f958555a3c45 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/InheritanceImplUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/InheritanceImplUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +24,7 @@ import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiModificationTracker; -import com.intellij.util.containers.ConcurrentHashMap; +import com.intellij.util.containers.ConcurrentWeakHashMap; import com.intellij.util.containers.HashSet; import gnu.trove.THashSet; import org.jetbrains.annotations.NonNls; @@ -41,14 +41,14 @@ public class InheritanceImplUtil { if (baseClass instanceof PsiAnonymousClass) return false; if (!checkDeep) return isInheritor(candidateClass, baseClass, false, null); - if (CommonClassNames.JAVA_LANG_OBJECT.equals(candidateClass.getQualifiedName())) return false; - if (CommonClassNames.JAVA_LANG_OBJECT.equals(baseClass.getQualifiedName())) return true; + if (CommonClassNames.JAVA_LANG_OBJECT_SHORT.equals(candidateClass.getName()) && CommonClassNames.JAVA_LANG_OBJECT.equals(candidateClass.getQualifiedName())) return false; + if (CommonClassNames.JAVA_LANG_OBJECT_SHORT.equals(baseClass.getName()) && CommonClassNames.JAVA_LANG_OBJECT.equals(baseClass.getQualifiedName())) return true; Map<PsiClass, Boolean> map = CachedValuesManager. getCachedValue(candidateClass, new CachedValueProvider<Map<PsiClass, Boolean>>() { @Nullable @Override public Result<Map<PsiClass, Boolean>> compute() { - final Map<PsiClass, Boolean> map = new ConcurrentHashMap<PsiClass, Boolean>(); + final Map<PsiClass, Boolean> map = new ConcurrentWeakHashMap<PsiClass, Boolean>(); return Result.create(map, candidateClass, PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT); } }); @@ -82,7 +82,7 @@ public class InheritanceImplUtil { } @NonNls final String baseName = baseClass.getName(); - if ("Object".equals(baseName)) { + if (CommonClassNames.JAVA_LANG_OBJECT_SHORT.equals(baseName)) { PsiClass objectClass = JavaPsiFacade.getInstance(manager.getProject()).findClass(CommonClassNames.JAVA_LANG_OBJECT, candidateClass.getResolveScope()); if (manager.areElementsEquivalent(baseClass, objectClass)) { if (manager.areElementsEquivalent(candidateClass, objectClass)) return false; |