mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-15119 Completion in relative imports ignores whitespaces between dots
This commit is contained in:
@@ -26,12 +26,13 @@ import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.QualifiedName;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ProcessingContext;
|
||||
import com.jetbrains.python.PyNames;
|
||||
import com.jetbrains.python.PyTokenTypes;
|
||||
import com.jetbrains.python.psi.*;
|
||||
import com.intellij.psi.util.QualifiedName;
|
||||
import com.jetbrains.python.psi.impl.PyPsiUtils;
|
||||
import com.jetbrains.python.psi.impl.PyReferenceExpressionImpl;
|
||||
import com.jetbrains.python.psi.resolve.*;
|
||||
import com.jetbrains.python.psi.types.PyModuleType;
|
||||
@@ -222,10 +223,10 @@ public class PyImportReference extends PyReferenceImpl {
|
||||
}
|
||||
}
|
||||
else { // in "import _" or "from _ import"
|
||||
ASTNode n = myElement.getNode().getTreePrev();
|
||||
while (n != null && n.getElementType() == PyTokenTypes.DOT) {
|
||||
PsiElement prevElem = PyPsiUtils.getPrevNonWhitespaceSibling(myElement);
|
||||
while (prevElem != null && prevElem.getNode().getElementType() == PyTokenTypes.DOT) {
|
||||
relativeLevel += 1;
|
||||
n = n.getTreePrev();
|
||||
prevElem = PyPsiUtils.getPrevNonWhitespaceSibling(prevElem);
|
||||
}
|
||||
if (fromImport != null) {
|
||||
addImportedNames(fromImport.getImportElements());
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
from . . <caret>
|
||||
@@ -767,6 +767,14 @@ public class PythonCompletionTest extends PyTestCase {
|
||||
assertEmpty(variants);
|
||||
}
|
||||
|
||||
// PY-15119
|
||||
public void testRelativeFromImportWhitespacesAfterDot() {
|
||||
myFixture.copyDirectoryToProject("completion/" + getTestName(true), "");
|
||||
myFixture.configureByFile("pkg/subpkg1/a.py");
|
||||
myFixture.completeBasic();
|
||||
assertSameElements(myFixture.getLookupElementStrings(), "import", "subpkg1", "subpkg2", "m");
|
||||
}
|
||||
|
||||
public void testStructuralType() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
@@ -233,7 +233,7 @@ public class PythonKeywordCompletionTest extends PyTestCase {
|
||||
List<String> variants = doTestByText("from ...<caret>");
|
||||
assertDoesntContain(variants, "import");
|
||||
|
||||
variants = doTestByText("from ... <caret>");
|
||||
assertContainsElements(variants, "import");
|
||||
assertNull(doTestByText("from ... <caret>"));
|
||||
myFixture.checkResult("from ... import ");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user