From 33515fc44f9514ad526f75e4b98269ab1baccfae Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 23 Sep 2010 11:38:59 +0400 Subject: [PATCH] accept trailing comma in list literal --- .../python/parsing/ExpressionParsing.java | 3 +++ python/testData/psi/TrailingCommaInList.py | 1 + python/testData/psi/TrailingCommaInList.txt | 16 ++++++++++++++++ .../com/jetbrains/python/PythonParsingTest.java | 4 ++++ 4 files changed, 24 insertions(+) create mode 100644 python/testData/psi/TrailingCommaInList.py create mode 100644 python/testData/psi/TrailingCommaInList.txt diff --git a/python/src/com/jetbrains/python/parsing/ExpressionParsing.java b/python/src/com/jetbrains/python/parsing/ExpressionParsing.java index 46a7de502ad5..3c4073bba423 100644 --- a/python/src/com/jetbrains/python/parsing/ExpressionParsing.java +++ b/python/src/com/jetbrains/python/parsing/ExpressionParsing.java @@ -106,6 +106,9 @@ public class ExpressionParsing extends Parsing { if (!matchToken(PyTokenTypes.COMMA)) { builder.error("expected ',' or ']'"); } + if (atToken(PyTokenTypes.RBRACKET)) { + break; + } if (!parseSingleExpression(isTargetExpression)) { builder.error(message("PARSE.expected.expr.or.comma.or.bracket")); break; diff --git a/python/testData/psi/TrailingCommaInList.py b/python/testData/psi/TrailingCommaInList.py new file mode 100644 index 000000000000..9d2e0737eb9e --- /dev/null +++ b/python/testData/psi/TrailingCommaInList.py @@ -0,0 +1 @@ +x = ['a','b',] diff --git a/python/testData/psi/TrailingCommaInList.txt b/python/testData/psi/TrailingCommaInList.txt new file mode 100644 index 000000000000..7ddaf9bffb6f --- /dev/null +++ b/python/testData/psi/TrailingCommaInList.txt @@ -0,0 +1,16 @@ +PyFile:TrailingCommaInList.py + PyAssignmentStatement + PyTargetExpression: x + PsiElement(Py:IDENTIFIER)('x') + PsiWhiteSpace(' ') + PsiElement(Py:EQ)('=') + PsiWhiteSpace(' ') + PyListLiteralExpression + PsiElement(Py:LBRACKET)('[') + PyStringLiteralExpression: a + PsiElement(Py:STRING_LITERAL)(''a'') + PsiElement(Py:COMMA)(',') + PyStringLiteralExpression: b + PsiElement(Py:STRING_LITERAL)(''b'') + PsiElement(Py:COMMA)(',') + 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 cd5149d9d603..9e52adc3075c 100644 --- a/python/testSrc/com/jetbrains/python/PythonParsingTest.java +++ b/python/testSrc/com/jetbrains/python/PythonParsingTest.java @@ -218,6 +218,10 @@ public class PythonParsingTest extends ParsingTestCase { doTest(); } + public void testTrailingCommaInList() { + doTest(); + } + public void doTest() { doTest(LanguageLevel.PYTHON25); }