From 53791956d17faef33dd06a86e126778b09ec93ba Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 22 Feb 2011 15:06:37 +0100 Subject: [PATCH] report missing value expression in dict literal as error (PY-2791) --- .../python/parsing/ExpressionParsing.java | 1 + python/testData/psi/DictMissingValue.py | 1 + python/testData/psi/DictMissingValue.txt | 24 +++++++++++++++++++ .../jetbrains/python/PythonParsingTest.java | 4 ++++ 4 files changed, 30 insertions(+) create mode 100644 python/testData/psi/DictMissingValue.py create mode 100644 python/testData/psi/DictMissingValue.txt diff --git a/python/src/com/jetbrains/python/parsing/ExpressionParsing.java b/python/src/com/jetbrains/python/parsing/ExpressionParsing.java index 8047264147be..9a7e343307cd 100644 --- a/python/src/com/jetbrains/python/parsing/ExpressionParsing.java +++ b/python/src/com/jetbrains/python/parsing/ExpressionParsing.java @@ -219,6 +219,7 @@ public class ExpressionParsing extends Parsing { } checkMatches(PyTokenTypes.COLON, message("PARSE.expected.colon")); if (!parseSingleExpression(false)) { + myBuilder.error("value expression expected"); marker.drop(); return false; } diff --git a/python/testData/psi/DictMissingValue.py b/python/testData/psi/DictMissingValue.py new file mode 100644 index 000000000000..5e0ffb9e4479 --- /dev/null +++ b/python/testData/psi/DictMissingValue.py @@ -0,0 +1 @@ +dl = {key1: value1, key2:} \ No newline at end of file diff --git a/python/testData/psi/DictMissingValue.txt b/python/testData/psi/DictMissingValue.txt new file mode 100644 index 000000000000..671b519a7d4a --- /dev/null +++ b/python/testData/psi/DictMissingValue.txt @@ -0,0 +1,24 @@ +PyFile:DictMissingValue.py + PyAssignmentStatement + PyTargetExpression: dl + PsiElement(Py:IDENTIFIER)('dl') + PsiWhiteSpace(' ') + PsiElement(Py:EQ)('=') + PsiWhiteSpace(' ') + PyDictLiteralExpression + PsiElement(Py:LBRACE)('{') + PyKeyValueExpression + PyReferenceExpression: key1 + PsiElement(Py:IDENTIFIER)('key1') + PsiElement(Py:COLON)(':') + PsiWhiteSpace(' ') + PyReferenceExpression: value1 + PsiElement(Py:IDENTIFIER)('value1') + PsiElement(Py:COMMA)(',') + PsiWhiteSpace(' ') + PyReferenceExpression: key2 + PsiElement(Py:IDENTIFIER)('key2') + PsiElement(Py:COLON)(':') + PsiErrorElement:value expression expected + + PsiElement(Py:RBRACE)('}') \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PythonParsingTest.java b/python/testSrc/com/jetbrains/python/PythonParsingTest.java index 3cd473572f7e..9ae3a2ee4312 100644 --- a/python/testSrc/com/jetbrains/python/PythonParsingTest.java +++ b/python/testSrc/com/jetbrains/python/PythonParsingTest.java @@ -247,6 +247,10 @@ public class PythonParsingTest extends ParsingTestCase { doTest(); } + public void testDictMissingValue() { // PY-2791 + doTest(); + } + public void doTest() { doTest(LanguageLevel.PYTHON25); }