PY-44026 Make PyQualifiedNameCompletionMatcher accept a qualifed name directly

GitOrigin-RevId: 3a3a6915b277e327ece11af25bbd10fb47804cf8
This commit is contained in:
Mikhail Golubev
2021-02-17 15:56:32 +00:00
committed by intellij-monorepo-bot
parent 9ad52f13a4
commit aa3041a69f
2 changed files with 7 additions and 9 deletions
@@ -100,11 +100,11 @@ class PyUnresolvedModuleAttributeCompletionContributor : CompletionContributor()
val project = parameters.position.project
val attribute = result.prefixMatcher.prefix
val qualifier = context.get(REFERENCE_QUALIFIER)
val qualifierString = qualifier.toString()
val suggestedQualifiedNames = HashSet<String>()
ProgressManager.checkCanceled()
val resultMatchingCompleteReference = result.withPrefixMatcher(QualifiedNameMatcher(qualifier.append(attribute)))
val qualifiedName = qualifier.append(attribute)
val resultMatchingCompleteReference = result.withPrefixMatcher(QualifiedNameMatcher(qualifiedName))
PyModuleNameIndex.find(qualifier.lastComponent!!, project, true).asSequence()
.filter { QualifiedNameFinder.findShortestImportableQName(it) == qualifier }
.flatMap { it.iterateNames().asSequence() }
@@ -112,7 +112,7 @@ class PyUnresolvedModuleAttributeCompletionContributor : CompletionContributor()
.filterNot { it.name == null || it.name!!.startsWith('_') }
.filter { attribute.isEmpty() || result.prefixMatcher.prefixMatches(it.name!!) }
.mapNotNull {
val qualifiedNameToSuggest = "$qualifierString.${it.name}"
val qualifiedNameToSuggest = "$qualifier.${it.name}"
if (suggestedQualifiedNames.add(qualifiedNameToSuggest)) {
LookupElementBuilder.create(it, qualifiedNameToSuggest)
.withIcon(it.getIcon(0))
@@ -128,7 +128,7 @@ class PyUnresolvedModuleAttributeCompletionContributor : CompletionContributor()
}
val scope = PySearchUtilBase.excludeSdkTestsScope(project)
PyQualifiedNameCompletionMatcher.processMatchingExportedNames(
qualifier, attribute, parameters.originalFile, scope,
qualifiedName, parameters.originalFile, scope,
Processor {
ProgressManager.checkCanceled()
if (suggestedQualifiedNames.add(it.qualifiedName.toString())) {
@@ -36,13 +36,12 @@ public class PyQualifiedNameCompletionMatcher {
private PyQualifiedNameCompletionMatcher() {
}
public static void processMatchingExportedNames(@NotNull QualifiedName qualifierPattern,
@NotNull String attributePattern,
public static void processMatchingExportedNames(@NotNull QualifiedName qualifiedNamePattern,
@NotNull PsiFile currentFile,
@NotNull GlobalSearchScope scope,
@NotNull Processor<? super ExportedName> processor) {
if (attributePattern.isEmpty() || qualifierPattern.getComponentCount() == 0) return;
QualifiedNameMatcher matcher = new QualifiedNameMatcher(qualifierPattern.append(attributePattern));
if (qualifiedNamePattern.getComponentCount() < 2) return;
QualifiedNameMatcher matcher = new QualifiedNameMatcher(qualifiedNamePattern);
StubIndex stubIndex = StubIndex.getInstance();
Project project = Objects.requireNonNull(scope.getProject());
@@ -86,7 +85,6 @@ public class PyQualifiedNameCompletionMatcher {
}
finally {
if (LOG.isDebugEnabled()) {
String qualifiedNamePattern = qualifierPattern + "." + attributePattern;
LOG.debug("Index lookup stats for '" + qualifiedNamePattern + "':\n" +
"Scanned keys: " + stats.scannedKeys + "\n" +
"Matched keys: " + stats.matchingKeys + "\n" +