- Don't repeat reference variant lookup for empty prefix.

- Temporary disable duplicates search with PsiElement position.
This commit is contained in:
Nikolay Krasko
2012-03-12 21:12:42 +04:00
parent 2c068dabb0
commit 55b0ea1e60
2 changed files with 16 additions and 14 deletions
@@ -40,7 +40,8 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl {
@Nullable @Nullable
protected final PsiClass psiClass; protected final PsiClass psiClass;
protected JavaClassOrPackageScope(@NotNull ClassOrNamespaceDescriptor descriptor, @NotNull JavaSemanticServices semanticServices, @Nullable PsiClass psiClass) { protected JavaClassOrPackageScope(@NotNull ClassOrNamespaceDescriptor descriptor, @NotNull JavaSemanticServices semanticServices,
@Nullable PsiClass psiClass) {
this.descriptor = descriptor; this.descriptor = descriptor;
this.semanticServices = semanticServices; this.semanticServices = semanticServices;
this.psiClass = psiClass; this.psiClass = psiClass;
@@ -79,6 +79,9 @@ public class JetCompletionContributor extends CompletionContributor {
addReferenceVariant(result, variant, positions); addReferenceVariant(result, variant, positions);
} }
// Prevent from adding reference variants from standard reference contributor
result.stopHere();
String prefix = result.getPrefixMatcher().getPrefix(); String prefix = result.getPrefixMatcher().getPrefix();
if (prefix.isEmpty() && parameters.getInvocationCount() < 2) { if (prefix.isEmpty() && parameters.getInvocationCount() < 2) {
@@ -93,8 +96,6 @@ public class JetCompletionContributor extends CompletionContributor {
if (shouldRunExtensionsCompletion(parameters, prefix)) { if (shouldRunExtensionsCompletion(parameters, prefix)) {
addJetExtensions(jetReference.getExpression(), result, position); addJetExtensions(jetReference.getExpression(), result, position);
} }
result.stopHere();
} }
} }
}); });
@@ -233,18 +234,18 @@ public class JetCompletionContributor extends CompletionContributor {
@NotNull LookupElement element, @NotNull LookupElement element,
@NotNull Set<LookupPositionObject> positions) { @NotNull Set<LookupPositionObject> positions) {
LookupPositionObject lookupPosition = getLookupPosition(element); // LookupPositionObject lookupPosition = getLookupPosition(element);
if (lookupPosition != null) { // if (lookupPosition != null) {
if (!positions.contains(lookupPosition)) { // if (!positions.contains(lookupPosition)) {
positions.add(lookupPosition); // positions.add(lookupPosition);
result.addElement(element); // result.addElement(element);
} // }
//
// There is already an element with same position - ignore duplicate // // There is already an element with same position - ignore duplicate
} // }
else { // else {
result.addElement(element); result.addElement(element);
} // }
} }
private static LookupPositionObject getLookupPosition(LookupElement element) { private static LookupPositionObject getLookupPosition(LookupElement element) {