PY-15075 Suggest "import" after dots in relative import only after additional whitespace

This commit is contained in:
Mikhail Golubev
2015-02-18 14:28:13 +03:00
parent e58f25677d
commit 7bf1fc88f6
2 changed files with 16 additions and 2 deletions
@@ -254,8 +254,13 @@ public class PyKeywordCompletionContributor extends CompletionContributor {
public static final PsiElementPattern.Capture<PsiElement> IN_FROM_IMPORT_AFTER_REF =
psiElement().afterLeaf(
or(psiElement().withElementType(PyTokenTypes.IDENTIFIER).inside(PyReferenceExpression.class),
psiElement().withElementType(PyTokenTypes.DOT))
).inside(PyFromImportStatement.class);
psiElement().with(new PatternCondition<PsiElement>("dotFollowedByWhitespace") {
@Override
public boolean accepts(@NotNull PsiElement element, ProcessingContext context) {
return element.getNode().getElementType() == PyTokenTypes.DOT && element.getNextSibling() instanceof PsiWhiteSpace;
}
}))
).inside(PyFromImportStatement.class);
public static final ElementPattern<PsiElement> IN_WITH_AFTER_REF =
psiElement().afterLeaf(psiElement().inside(psiElement(PyWithItem.class).with(new PatternCondition<PyWithItem>("withoutAsKeyword") {
@@ -227,4 +227,13 @@ public class PythonKeywordCompletionTest extends PyTestCase {
"finally:\n" +
" pass\n<caret>"), "except");
}
// PY-15075
public void testImportAfterWhitespaceInRelativeImport() {
List<String> variants = doTestByText("from ...<caret>");
assertDoesntContain(variants, "import");
variants = doTestByText("from ... <caret>");
assertContainsElements(variants, "import");
}
}