- 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
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.semanticServices = semanticServices;
this.psiClass = psiClass;
@@ -79,6 +79,9 @@ public class JetCompletionContributor extends CompletionContributor {
addReferenceVariant(result, variant, positions);
}
// Prevent from adding reference variants from standard reference contributor
result.stopHere();
String prefix = result.getPrefixMatcher().getPrefix();
if (prefix.isEmpty() && parameters.getInvocationCount() < 2) {
@@ -93,8 +96,6 @@ public class JetCompletionContributor extends CompletionContributor {
if (shouldRunExtensionsCompletion(parameters, prefix)) {
addJetExtensions(jetReference.getExpression(), result, position);
}
result.stopHere();
}
}
});
@@ -233,18 +234,18 @@ public class JetCompletionContributor extends CompletionContributor {
@NotNull LookupElement element,
@NotNull Set<LookupPositionObject> positions) {
LookupPositionObject lookupPosition = getLookupPosition(element);
if (lookupPosition != null) {
if (!positions.contains(lookupPosition)) {
positions.add(lookupPosition);
result.addElement(element);
}
// There is already an element with same position - ignore duplicate
}
else {
// LookupPositionObject lookupPosition = getLookupPosition(element);
// if (lookupPosition != null) {
// if (!positions.contains(lookupPosition)) {
// positions.add(lookupPosition);
// result.addElement(element);
// }
//
// // There is already an element with same position - ignore duplicate
// }
// else {
result.addElement(element);
}
// }
}
private static LookupPositionObject getLookupPosition(LookupElement element) {