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);