PY-83412 Don't complete module and package names in assignment targets

GitOrigin-RevId: 1036be445b42c78ab555b0cd376e57fcebca9248
This commit is contained in:
Mikhail Golubev
2025-08-15 16:26:28 +00:00
committed by intellij-monorepo-bot
parent 9c39d116ed
commit e2f2b2da6d
4 changed files with 11 additions and 0 deletions
@@ -19,6 +19,7 @@ import com.jetbrains.python.codeInsight.completion.PythonCompletionWeigher.NOT_I
import com.jetbrains.python.psi.PyFile
import com.jetbrains.python.psi.PyImportStatementBase
import com.jetbrains.python.psi.PyReferenceExpression
import com.jetbrains.python.psi.PyTargetExpression
import com.jetbrains.python.psi.resolve.fromFoothold
import com.jetbrains.python.psi.resolve.resolveQualifiedName
import com.jetbrains.python.psi.types.PyModuleType
@@ -97,6 +98,7 @@ class PyModuleNameCompletionContributor : CompletionContributor(), DumbAware {
return parent is PyReferenceExpression
&& !parent.isQualified
&& parameters.originalPosition?.parent !is PyTargetExpression
&& PsiTreeUtil.getParentOfType(element, PyImportStatementBase::class.java) == null
}
}
@@ -12,6 +12,14 @@ public class PyNotImportedPackageNameCompletionTest extends PyTestCase {
myFixture.checkResultByFile(testName + "/main.after.py");
}
public void testPackageNameNotSuggestedForAssignmentTarget() {
final String testName = getTestName(false);
myFixture.copyDirectoryToProject(testName, "");
myFixture.configureByFile("main.py");
myFixture.completeBasic();
assertDoesntContain(myFixture.getLookupElementStrings(), "foobar");
}
@Override
protected String getTestDataPath() {
return super.getTestDataPath() + "/completion/notImportedPackageName/";