From 6d80b33502b042ea0290a10eb7857976e7cf6658 Mon Sep 17 00:00:00 2001 From: "peter.gromov" Date: Wed, 17 Nov 2010 14:42:35 +0300 Subject: [PATCH] minor extraction --- .../completion/JavaCompletionContributor.java | 2 +- .../completion/JavaInheritorsGetter.java | 61 ++++++++++--------- .../filters/getters/ExpectedTypesGetter.java | 6 +- 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java index 7950cc21013c..8e2ac4efcdc9 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -455,7 +455,7 @@ public class JavaCompletionContributor extends CompletionContributor { if (parent instanceof PsiReferenceExpression && ((PsiReferenceExpression)parent).getQualifier() != null) return false; if (parent instanceof PsiReferenceExpression && parent.getParent() instanceof PsiReferenceExpression) return true; - return new ExpectedTypesGetter().get(element, null).length > 0; + return ExpectedTypesGetter.getExpectedTypes(element, false).length > 0; } private static boolean shouldSuggestClassNameCompletion(final PsiElement element) { diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java index 5efa5a1b60f9..7ad7bf1636e5 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java @@ -33,10 +33,10 @@ import com.intellij.util.Consumer; import com.intellij.util.ProcessingContext; import com.intellij.util.Processor; import com.intellij.util.SmartList; -import com.intellij.util.containers.ContainerUtil; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; +import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -51,40 +51,45 @@ public class JavaInheritorsGetter extends CompletionProvider infoCollection = Arrays.asList(infos); + processInheritors(parameters, extractClassTypes(infos), result.getPrefixMatcher(), new Consumer() { + public void consume(final PsiType type) { + addExpectedType(result, type, parameters, infoCollection); + } + }); + } + + private static void addArrayTypes(CompletionResultSet result, + PsiElement identifierCopy, + ExpectedTypeInfo[] infos) { + + for (final PsiType type : ExpectedTypesGetter.extractTypes(infos, true)) { + if (type instanceof PsiArrayType) { + final LookupItem item = PsiTypeLookupItem.createLookupItem(JavaCompletionUtil.eliminateWildcards(type), identifierCopy); + if (item.getObject() instanceof PsiClass) { + JavaCompletionUtil.setShowFQN(item); + } + item.setInsertHandler(new DefaultInsertHandler()); //braces & shortening + result.addElement(JavaSmartCompletionContributor.decorate(item, Arrays.asList(infos))); + } + } + } + + public static List extractClassTypes(ExpectedTypeInfo[] infos) { final List expectedClassTypes = new SmartList(); - final List expectedArrayTypes = new SmartList(); - final List infos = new SmartList(); - - ContainerUtil.addAll(infos, JavaSmartCompletionContributor.getExpectedTypes(parameters)); - for (PsiType type : ExpectedTypesGetter.getExpectedTypes(identifierCopy, true)) { + for (PsiType type : ExpectedTypesGetter.extractTypes(infos, true)) { if (type instanceof PsiClassType) { final PsiClassType classType = (PsiClassType)type; if (classType.resolve() != null) { expectedClassTypes.add(classType); } } - else if (type instanceof PsiArrayType) { - expectedArrayTypes.add((PsiArrayType)type); - } } - - - for (final PsiArrayType type : expectedArrayTypes) { - final LookupItem item = PsiTypeLookupItem.createLookupItem(JavaCompletionUtil.eliminateWildcards(type), identifierCopy); - if (item.getObject() instanceof PsiClass) { - JavaCompletionUtil.setShowFQN(item); - } - item.setInsertHandler(new DefaultInsertHandler()); //braces & shortening - result.addElement(JavaSmartCompletionContributor.decorate(item, infos)); - } - - processInheritors(parameters, expectedClassTypes, result.getPrefixMatcher(), new Consumer() { - public void consume(final PsiType type) { - addExpectedType(result, type, parameters, infos); - } - }); + return expectedClassTypes; } private void addExpectedType(final CompletionResultSet result, final PsiType type, final CompletionParameters parameters, Collection infos) { @@ -151,8 +156,8 @@ public class JavaInheritorsGetter extends CompletionProvider statVariants = new THashSet(); final Processor processor = CodeInsightUtil.createInheritorsProcessor(parameters.getPosition(), type, 0, false, statVariants, baseClass, baseSubstitutor); - final StatisticsInfo[] statisticsInfos = StatisticsManager.getInstance().getAllValues(JavaStatisticsManager.getAfterNewKey(type)); - for (final StatisticsInfo statisticsInfo : statisticsInfos) { + final StatisticsInfo[] stats = StatisticsManager.getInstance().getAllValues(JavaStatisticsManager.getAfterNewKey(type)); + for (final StatisticsInfo statisticsInfo : stats) { final String value = statisticsInfo.getValue(); if (value.startsWith(JavaStatisticsManager.CLASS_PREFIX)) { final String qname = value.substring(JavaStatisticsManager.CLASS_PREFIX.length()); diff --git a/java/java-impl/src/com/intellij/psi/filters/getters/ExpectedTypesGetter.java b/java/java-impl/src/com/intellij/psi/filters/getters/ExpectedTypesGetter.java index 4c4b00cc2d6a..d60a2d33fd69 100644 --- a/java/java-impl/src/com/intellij/psi/filters/getters/ExpectedTypesGetter.java +++ b/java/java-impl/src/com/intellij/psi/filters/getters/ExpectedTypesGetter.java @@ -43,12 +43,13 @@ public class ExpectedTypesGetter implements ContextGetter{ } public static PsiType[] getExpectedTypes(final PsiElement context, boolean defaultTypes) { - ExpectedTypesProvider typesProvider = ExpectedTypesProvider.getInstance(context.getProject()); PsiExpression expression = PsiTreeUtil.getContextOfType(context, PsiExpression.class, true); if(expression == null) return PsiType.EMPTY_ARRAY; - ExpectedTypeInfo[] infos = typesProvider.getExpectedTypes(expression, true); + return extractTypes(ExpectedTypesProvider.getExpectedTypes(expression, true), defaultTypes); + } + public static PsiType[] extractTypes(ExpectedTypeInfo[] infos, boolean defaultTypes) { Set result = new THashSet(infos.length); for (ExpectedTypeInfo info : infos) { final PsiType type = info.getType(); @@ -60,5 +61,4 @@ public class ExpectedTypesGetter implements ContextGetter{ } return result.toArray(new PsiType[result.size()]); } - }