diff --git a/python/src/com/jetbrains/python/codeInsight/PyDictKeyNamesCompletionContributor.java b/python/src/com/jetbrains/python/codeInsight/PyDictKeyNamesCompletionContributor.java index cc2e64239442..f0374d7e9820 100644 --- a/python/src/com/jetbrains/python/codeInsight/PyDictKeyNamesCompletionContributor.java +++ b/python/src/com/jetbrains/python/codeInsight/PyDictKeyNamesCompletionContributor.java @@ -3,6 +3,7 @@ package com.jetbrains.python.codeInsight; import com.intellij.codeInsight.completion.*; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; +import com.intellij.lang.ASTNode; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; @@ -88,8 +89,11 @@ public class PyDictKeyNamesCompletionContributor extends PySeeingOriginalComplet private static CompletionResultSet createResult(PsiElement original, CompletionResultSet result) { PsiElement prevElement = original.getPrevSibling(); if (prevElement != null) { - if (prevElement.getNode().getElementType() != PyTokenTypes.LBRACKET) - return result.withPrefixMatcher(findPrefix(prevElement)); + ASTNode prevNode = prevElement.getNode(); + if (prevNode != null) { + if (prevNode.getElementType() != PyTokenTypes.LBRACKET) + return result.withPrefixMatcher(findPrefix(prevElement)); + } } PsiElement parentElement = original.getParent(); if (parentElement != null) { diff --git a/python/testData/selectWord/comma/after1.py b/python/testData/selectWord/comma/after1.py new file mode 100644 index 000000000000..388790351279 --- /dev/null +++ b/python/testData/selectWord/comma/after1.py @@ -0,0 +1 @@ +d = {'school_id':parent_id, "next": next} \ No newline at end of file diff --git a/python/testData/selectWord/comma/after2.py b/python/testData/selectWord/comma/after2.py new file mode 100644 index 000000000000..f843498730af --- /dev/null +++ b/python/testData/selectWord/comma/after2.py @@ -0,0 +1 @@ +d = {'school_id':parent_id, "next": next} \ No newline at end of file diff --git a/python/testData/selectWord/comma/after3.py b/python/testData/selectWord/comma/after3.py new file mode 100644 index 000000000000..0ff6327e67f6 --- /dev/null +++ b/python/testData/selectWord/comma/after3.py @@ -0,0 +1 @@ +d = {'school_id':parent_id, "next": next} \ No newline at end of file diff --git a/python/testData/selectWord/comma/before.py b/python/testData/selectWord/comma/before.py new file mode 100644 index 000000000000..71968fd12246 --- /dev/null +++ b/python/testData/selectWord/comma/before.py @@ -0,0 +1 @@ +d = {'school_id':parent_id, "next": next} \ No newline at end of file diff --git a/python/testData/selectWord/list/after1.py b/python/testData/selectWord/list/after1.py new file mode 100644 index 000000000000..5f12649146b6 --- /dev/null +++ b/python/testData/selectWord/list/after1.py @@ -0,0 +1 @@ +x = [1, 2, 3, 4] \ No newline at end of file diff --git a/python/testData/selectWord/list/after2.py b/python/testData/selectWord/list/after2.py new file mode 100644 index 000000000000..4fc5b2491d9f --- /dev/null +++ b/python/testData/selectWord/list/after2.py @@ -0,0 +1 @@ +x = [1, 2, 3, 4] \ No newline at end of file diff --git a/python/testData/selectWord/list/after3.py b/python/testData/selectWord/list/after3.py new file mode 100644 index 000000000000..93aa698ccd60 --- /dev/null +++ b/python/testData/selectWord/list/after3.py @@ -0,0 +1 @@ +x = [1, 2, 3, 4] \ No newline at end of file diff --git a/python/testData/selectWord/list/before.py b/python/testData/selectWord/list/before.py new file mode 100644 index 000000000000..65a71ae1e986 --- /dev/null +++ b/python/testData/selectWord/list/before.py @@ -0,0 +1 @@ +x = [1, 2, 3, 4] \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PySelectWordTest.java b/python/testSrc/com/jetbrains/python/PySelectWordTest.java index 3ad330363760..df92cd539576 100644 --- a/python/testSrc/com/jetbrains/python/PySelectWordTest.java +++ b/python/testSrc/com/jetbrains/python/PySelectWordTest.java @@ -23,6 +23,14 @@ public class PySelectWordTest extends PyLightFixtureTestCase { doTest(); } + public void testList() { // PY-1686 + doTest(); + } + + public void testComma() { // PY-1378 + doTest(); + } + private void doTest() { @NonNls final String path = "selectWord/" + getTestName(true); myFixture.copyDirectoryToProject(path, path);