mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-15218 Use "from import" if we insert import for symbol regardless of preferred import style
This commit is contained in:
@@ -311,7 +311,8 @@ public final class PyClassRefactoringUtil {
|
||||
}
|
||||
final QualifiedName containingQName;
|
||||
final String importedName;
|
||||
if (element instanceof PyFile || element instanceof PsiDirectory) {
|
||||
final boolean importingModuleOrPackage = element instanceof PyFile || element instanceof PsiDirectory;
|
||||
if (importingModuleOrPackage) {
|
||||
containingQName = qname.removeLastComponent();
|
||||
importedName = qname.getLastComponent();
|
||||
}
|
||||
@@ -320,7 +321,7 @@ public final class PyClassRefactoringUtil {
|
||||
importedName = getOriginalName(element);
|
||||
}
|
||||
final AddImportHelper.ImportPriority priority = AddImportHelper.getImportPriority(anchor, elementSource);
|
||||
if (preferFromImport && !containingQName.getComponents().isEmpty()) {
|
||||
if (preferFromImport && !containingQName.getComponents().isEmpty() || !importingModuleOrPackage) {
|
||||
return AddImportHelper.addOrUpdateFromImportStatement(file, containingQName.toString(), importedName, asName, priority, anchor);
|
||||
}
|
||||
else {
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
from b import bar
|
||||
|
||||
|
||||
def foo():
|
||||
bar()
|
||||
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
def bar():
|
||||
pass
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
def foo():
|
||||
bar()
|
||||
|
||||
|
||||
def bar():
|
||||
pass
|
||||
@@ -26,6 +26,7 @@ import com.intellij.testFramework.PlatformTestUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.SystemProperties;
|
||||
import com.jetbrains.python.PythonTestUtil;
|
||||
import com.jetbrains.python.codeInsight.PyCodeInsightSettings;
|
||||
import com.jetbrains.python.fixtures.PyTestCase;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import com.jetbrains.python.psi.PyClass;
|
||||
@@ -285,6 +286,18 @@ public class PyMoveTest extends PyTestCase {
|
||||
doMoveFileTest("pkg/subpkg2", "");
|
||||
}
|
||||
|
||||
// PY-15218
|
||||
public void testImportForMovedElementWithPreferredQualifiedImportStyle() {
|
||||
final boolean defaultImportStyle = PyCodeInsightSettings.getInstance().PREFER_FROM_IMPORT;
|
||||
try {
|
||||
PyCodeInsightSettings.getInstance().PREFER_FROM_IMPORT = false;
|
||||
doMoveSymbolTest("bar", "b.py");
|
||||
}
|
||||
finally {
|
||||
PyCodeInsightSettings.getInstance().PREFER_FROM_IMPORT = defaultImportStyle;
|
||||
}
|
||||
}
|
||||
|
||||
private void doMoveFileTest(String fileName, String toDirName) {
|
||||
Project project = myFixture.getProject();
|
||||
PsiManager manager = PsiManager.getInstance(project);
|
||||
|
||||
Reference in New Issue
Block a user