diff --git a/python/src/com/jetbrains/python/parsing/ExpressionParsing.java b/python/src/com/jetbrains/python/parsing/ExpressionParsing.java index bc11498e7dc1..46a7de502ad5 100644 --- a/python/src/com/jetbrains/python/parsing/ExpressionParsing.java +++ b/python/src/com/jetbrains/python/parsing/ExpressionParsing.java @@ -103,10 +103,10 @@ public class ExpressionParsing extends Parsing { } else { while (builder.getTokenType() != PyTokenTypes.RBRACKET) { - if (builder.getTokenType() == PyTokenTypes.COMMA) { - builder.advanceLexer(); + if (!matchToken(PyTokenTypes.COMMA)) { + builder.error("expected ',' or ']'"); } - else if (!parseSingleExpression(isTargetExpression)) { + if (!parseSingleExpression(isTargetExpression)) { builder.error(message("PARSE.expected.expr.or.comma.or.bracket")); break; } diff --git a/python/testData/psi/MissingListSeparators.py b/python/testData/psi/MissingListSeparators.py new file mode 100644 index 000000000000..7e3c715664c9 --- /dev/null +++ b/python/testData/psi/MissingListSeparators.py @@ -0,0 +1 @@ +a = [1 2 3] \ No newline at end of file diff --git a/python/testData/psi/MissingListSeparators.txt b/python/testData/psi/MissingListSeparators.txt new file mode 100644 index 000000000000..600a2add7a9b --- /dev/null +++ b/python/testData/psi/MissingListSeparators.txt @@ -0,0 +1,22 @@ +PyFile:MissingListSeparators.py + PyAssignmentStatement + PyTargetExpression: a + PsiElement(Py:IDENTIFIER)('a') + PsiWhiteSpace(' ') + PsiElement(Py:EQ)('=') + PsiWhiteSpace(' ') + PyListLiteralExpression + PsiElement(Py:LBRACKET)('[') + PyNumericLiteralExpression + PsiElement(Py:INTEGER_LITERAL)('1') + PsiErrorElement:expected ',' or ']' + + PsiWhiteSpace(' ') + PyNumericLiteralExpression + PsiElement(Py:INTEGER_LITERAL)('2') + PsiErrorElement:expected ',' or ']' + + PsiWhiteSpace(' ') + PyNumericLiteralExpression + PsiElement(Py:INTEGER_LITERAL)('3') + PsiElement(Py:RBRACKET)(']') \ 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 de97885d664f..cd5149d9d603 100644 --- a/python/testSrc/com/jetbrains/python/PythonParsingTest.java +++ b/python/testSrc/com/jetbrains/python/PythonParsingTest.java @@ -214,6 +214,10 @@ public class PythonParsingTest extends ParsingTestCase { doTest(); } + public void testMissingListSeparators() { // PY-1933 + doTest(); + } + public void doTest() { doTest(LanguageLevel.PYTHON25); }