diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java index 022822fb90e4..921577667cb9 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java @@ -150,10 +150,10 @@ public class PsiClassImplUtil { if (name == null) return Collections.emptyList(); if (checkBases) { - Map>> allMethodsMap = getMap(aClass, type); - List> list = allMethodsMap.get(name); + Map[]> allMethodsMap = getMap(aClass, type); + Pair[] list = allMethodsMap.get(name); if (list == null) return Collections.emptyList(); - List ret = new ArrayList(list.size()); + List ret = new ArrayList(list.length); for (final Pair info : list) { ret.add(info.getFirst()); } @@ -186,9 +186,10 @@ public class PsiClassImplUtil { @NotNull public static List> getAllWithSubstitutorsByMap(@NotNull PsiClass aClass, @NotNull MemberType type) { - Map>> allMap = getMap(aClass, type); + Map[]> allMap = getMap(aClass, type); + Pair[] pairs = allMap.get(ALL); //noinspection unchecked - return (List)allMap.get(ALL); + return Arrays.>asList((Pair[])pairs); } @NotNull @@ -210,7 +211,7 @@ public class PsiClassImplUtil { public enum MemberType {CLASS, FIELD, METHOD} - private static Map>> getMap(@NotNull PsiClass aClass, @NotNull MemberType type) { + private static Map[]> getMap(@NotNull PsiClass aClass, @NotNull MemberType type) { ParameterizedCachedValue, PsiClass> value = getValues(aClass); return value.getValue(aClass).get(aClass.getResolveScope()).get(type); } @@ -357,7 +358,7 @@ public class PsiClassImplUtil { return factory.createMethodFromText(text, null).getSignature(PsiSubstitutor.EMPTY); } - private static class MembersMap extends ConcurrentFactoryMap>>> { + private static class MembersMap extends ConcurrentFactoryMap[]>> { private final PsiClass myPsiClass; private final GlobalSearchScope myResolveScope; @@ -368,7 +369,7 @@ public class PsiClassImplUtil { @Nullable @Override - protected Map>> create(final MemberType key) { + protected Map[]> create(final MemberType key) { final Map>> map = new THashMap>>(); final List> allMembers = new ArrayList>(); @@ -412,7 +413,12 @@ public class PsiClassImplUtil { processDeclarationsInClassNotCached(myPsiClass, processor, ResolveState.initial(), null, null, myPsiClass, false, PsiUtil.getLanguageLevel(myPsiClass), myResolveScope); - return map; + Map[]> result = ContainerUtil.newTroveMap(); + for (String name : map.keySet()) { + //noinspection unchecked + result.put(name, map.get(name).toArray(new Pair[0])); + } + return result; } } @@ -510,9 +516,9 @@ public class PsiClassImplUtil { if (!processor.execute(fieldByName, state)) return false; } else { - final Map>> allFieldsMap = value.get(MemberType.FIELD); + final Map[]> allFieldsMap = value.get(MemberType.FIELD); - final List> list = allFieldsMap.get(name); + final Pair[] list = allFieldsMap.get(name); if (list != null) { boolean resolved = false; for (final Pair candidate : list) { @@ -550,9 +556,9 @@ public class PsiClassImplUtil { if (!processor.execute(classByName, state)) return false; } else { - Map>> allClassesMap = value.get(MemberType.CLASS); + Map[]> allClassesMap = value.get(MemberType.CLASS); - List> list = allClassesMap.get(name); + Pair[] list = allClassesMap.get(name); if (list != null) { boolean resolved = false; for (final Pair candidate : list) { @@ -584,8 +590,8 @@ public class PsiClassImplUtil { return true; } } - Map>> allMethodsMap = value.get(MemberType.METHOD); - List> list = allMethodsMap.get(name); + Map[]> allMethodsMap = value.get(MemberType.METHOD); + Pair[] list = allMethodsMap.get(name); if (list != null) { boolean resolved = false; for (final Pair candidate : list) { @@ -1011,12 +1017,11 @@ public class PsiClassImplUtil { } return ret; } - Map>> map = getMap(psiClass, MemberType.METHOD); - @SuppressWarnings("unchecked") - List> list = (List)map.get(name); + Pair[] list = getMap(psiClass, MemberType.METHOD).get(name); + //noinspection unchecked return list == null ? Collections.>emptyList() : - Collections.unmodifiableList(list); + Arrays.>asList((Pair[])list); } @NotNull