From b0f98711a0845d80a29f9a622650372997c700b7 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Sun, 17 Jun 2012 05:55:24 +0400 Subject: [PATCH] idea: do not call prefix matcher in loop if prefix is empty --- .../completion/JetCompletionContributor.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionContributor.java b/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionContributor.java index 172bf2ea97c..82f329bf01e 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionContributor.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionContributor.java @@ -349,15 +349,23 @@ public class JetCompletionContributor extends CompletionContributor { (JetFile)reference.getExpression().getContainingFile()) .getBindingContext(); - class PrefixMatcherNamePredicate extends NamePredicate { - @Override - public boolean matches(@NotNull Name name) { - return result.getPrefixMatcher().prefixMatches(name.getName()); + final PrefixMatcher prefixMatcher = result.getPrefixMatcher(); + + NamePredicate namePredicate; + if (prefixMatcher.getPrefix().length() == 0) { + namePredicate = NamePredicate.all(); + } else { + class PrefixMatcherNamePredicate extends NamePredicate { + @Override + public boolean matches(@NotNull Name name) { + return prefixMatcher.prefixMatches(name.getName()); + } } + namePredicate = new PrefixMatcherNamePredicate(); } Collection descriptors = TipsManager.getReferenceVariants( - reference.getExpression(), bindingContext, new PrefixMatcherNamePredicate()); + reference.getExpression(), bindingContext, namePredicate); Collection checkedDescriptors = Collections2.filter(descriptors, new Predicate() { @Override