mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
second half of fix for PY-7887
This commit is contained in:
@@ -226,14 +226,17 @@ public class AddImportHelper {
|
||||
if (target instanceof PsiFileSystemItem && qName.getComponentCount() == 1) {
|
||||
addImportStatement(file, path, null, priority);
|
||||
}
|
||||
else if (useQualified) {
|
||||
addImportStatement(file, path, null, priority);
|
||||
final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(file.getProject());
|
||||
element.replace(elementGenerator.createExpressionFromText(LanguageLevel.forElement(target), qName + "." + target.getName()));
|
||||
}
|
||||
else {
|
||||
final PyQualifiedName toImportQName = QualifiedNameFinder.findCanonicalImportPath(toImport, element);
|
||||
addImportFrom(file, null, toImportQName.toString(), target.getName(), null, priority);
|
||||
if (useQualified) {
|
||||
addImportStatement(file, path, null, priority);
|
||||
final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(file.getProject());
|
||||
final String targetName = PyUtil.getElementNameWithoutExtension(target);
|
||||
element.replace(elementGenerator.createExpressionFromText(LanguageLevel.forElement(target), toImportQName + "." + targetName));
|
||||
}
|
||||
else {
|
||||
addImportFrom(file, null, toImportQName.toString(), target.getName(), null, priority);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -609,6 +609,12 @@ public class PyUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static String getElementNameWithoutExtension(PsiNamedElement psiNamedElement) {
|
||||
return psiNamedElement instanceof PyFile
|
||||
? FileUtil.getNameWithoutExtension(((PyFile)psiNamedElement).getName())
|
||||
: psiNamedElement.getName();
|
||||
}
|
||||
|
||||
public static boolean hasUnresolvedAncestors(@NotNull PyClass cls) {
|
||||
for (PyClassRef classRef : cls.iterateAncestors()) {
|
||||
if (classRef.getPyClass() == null && classRef.getType() == null) {
|
||||
|
||||
@@ -50,9 +50,7 @@ public abstract class VariantsProcessor implements PsiScopeProcessor {
|
||||
// TODO: refactor to look saner; much code duplication
|
||||
if (element instanceof PsiNamedElement) {
|
||||
final PsiNamedElement psiNamedElement = (PsiNamedElement)element;
|
||||
final String name = psiNamedElement instanceof PyFile
|
||||
? FileUtil.getNameWithoutExtension(((PyFile)psiNamedElement).getName())
|
||||
: psiNamedElement.getName();
|
||||
final String name = PyUtil.getElementNameWithoutExtension(psiNamedElement);
|
||||
if (name != null && nameIsAcceptable(name)) {
|
||||
addElement(name, psiNamedElement);
|
||||
}
|
||||
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import pack.submod
|
||||
|
||||
pack.submod
|
||||
@@ -0,0 +1 @@
|
||||
subm<caret>
|
||||
@@ -18,15 +18,7 @@ public class PyClassNameCompletionTest extends PyTestCase {
|
||||
}
|
||||
|
||||
public void testQualified() {
|
||||
final PyCodeInsightSettings settings = PyCodeInsightSettings.getInstance();
|
||||
boolean oldValue = settings.PREFER_FROM_IMPORT;
|
||||
settings.PREFER_FROM_IMPORT = false;
|
||||
try {
|
||||
doTest();
|
||||
}
|
||||
finally {
|
||||
settings.PREFER_FROM_IMPORT = oldValue;
|
||||
}
|
||||
doTestWithoutFromImport();
|
||||
}
|
||||
|
||||
public void testFunction() {
|
||||
@@ -45,6 +37,22 @@ public class PyClassNameCompletionTest extends PyTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testSubmoduleRegularImport() { // PY-7887
|
||||
doTestWithoutFromImport();
|
||||
}
|
||||
|
||||
private void doTestWithoutFromImport() {
|
||||
final PyCodeInsightSettings settings = PyCodeInsightSettings.getInstance();
|
||||
boolean oldValue = settings.PREFER_FROM_IMPORT;
|
||||
settings.PREFER_FROM_IMPORT = false;
|
||||
try {
|
||||
doTest();
|
||||
}
|
||||
finally {
|
||||
settings.PREFER_FROM_IMPORT = oldValue;
|
||||
}
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
final String path = "/completion/className/" + getTestName(true);
|
||||
myFixture.copyDirectoryToProject(path, "");
|
||||
|
||||
Reference in New Issue
Block a user