mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-25234 Fix ordering for imports resolved into binary skeletons of stdlib
Previously, we used the priority of the binary skeletons directory itself, thus placing them in a wrong THIRD_PARTY group.
This commit is contained in:
@@ -39,6 +39,7 @@ import com.intellij.ui.SimpleColoredComponent;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.psi.*;
|
||||
import com.jetbrains.python.psi.impl.PyPsiUtils;
|
||||
@@ -48,6 +49,8 @@ import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
|
||||
import static com.jetbrains.python.psi.PyUtil.as;
|
||||
|
||||
/**
|
||||
* Turns an unqualified unresolved identifier into qualified and resolvable.
|
||||
*
|
||||
@@ -148,7 +151,9 @@ public class ImportFromExistingAction implements QuestionAction {
|
||||
private void addImportStatement(ImportCandidateHolder item) {
|
||||
final Project project = myTarget.getProject();
|
||||
final PyElementGenerator gen = PyElementGenerator.getInstance(project);
|
||||
AddImportHelper.ImportPriority priority = AddImportHelper.getImportPriority(myTarget, item.getFile());
|
||||
|
||||
final PsiFileSystemItem filesystemAnchor = ObjectUtils.chooseNotNull(as(item.getImportable(), PsiFileSystemItem.class), item.getFile());
|
||||
AddImportHelper.ImportPriority priority = AddImportHelper.getImportPriority(myTarget, filesystemAnchor);
|
||||
PsiFile file = myTarget.getContainingFile();
|
||||
InjectedLanguageManager manager = InjectedLanguageManager.getInstance(project);
|
||||
if (manager.isInjectedFragment(file)) {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
import re
|
||||
|
||||
import mod
|
||||
|
||||
print(re, <error descr="Unresolved reference 'sys'">s<caret>ys</error>, mod)
|
||||
@@ -0,0 +1,6 @@
|
||||
import re
|
||||
import sys
|
||||
|
||||
import mod
|
||||
|
||||
print(re, sys, mod)
|
||||
@@ -55,15 +55,18 @@ public class PyAddImportQuickFixTest extends PyQuickFixTestCase {
|
||||
doMultiFileAutoImportTest("Import this name");
|
||||
}
|
||||
|
||||
public void testSkeletonStdlibModule() {
|
||||
doMultiFileAutoImportTest("Import 'sys'");
|
||||
}
|
||||
|
||||
private void doMultiFileAutoImportTest(@NotNull String hintPrefix) {
|
||||
myFixture.copyDirectoryToProject(getTestName(true), "");
|
||||
myFixture.enableInspections(PyUnresolvedReferencesInspection.class);
|
||||
final String entryPoint = "main";
|
||||
myFixture.configureByFile(entryPoint + ".py");
|
||||
myFixture.configureByFile("main.py");
|
||||
myFixture.checkHighlighting(true, false, false);
|
||||
IntentionAction intention = myFixture.findSingleIntention(hintPrefix);
|
||||
|
||||
final IntentionAction intention = myFixture.findSingleIntention(hintPrefix);
|
||||
myFixture.launchAction(intention);
|
||||
myFixture.checkResultByFile(getTestName(true) + "/" + entryPoint + "_after.py", true);
|
||||
myFixture.checkResultByFile(getTestName(true) + "/main_after.py", true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user