From 8f165490c148c95d9e2d23f8ad3383a06b8ba936 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 25 Jan 2010 15:30:25 +0300 Subject: [PATCH] support raise ... from in Python 3 --- .../jetbrains/python/parsing/StatementParsing.java | 4 ++++ python/testData/psi/RaiseFrom.py | 1 + python/testData/psi/RaiseFrom.txt | 11 +++++++++++ .../com/jetbrains/python/PythonParsingTest.java | 4 ++++ 4 files changed, 20 insertions(+) create mode 100644 python/testData/psi/RaiseFrom.py create mode 100644 python/testData/psi/RaiseFrom.txt diff --git a/python/src/com/jetbrains/python/parsing/StatementParsing.java b/python/src/com/jetbrains/python/parsing/StatementParsing.java index a8a42d340f65..833ea89dde57 100644 --- a/python/src/com/jetbrains/python/parsing/StatementParsing.java +++ b/python/src/com/jetbrains/python/parsing/StatementParsing.java @@ -303,6 +303,10 @@ public class StatementParsing extends Parsing implements ITokenTypeRemapper { getExpressionParser().parseSingleExpression(false); } } + else if (myBuilder.getTokenType() == PyTokenTypes.FROM_KEYWORD) { + myBuilder.advanceLexer(); + getExpressionParser().parseSingleExpression(false); + } } checkEndOfStatement(inSuite); raiseStatement.done(PyElementTypes.RAISE_STATEMENT); diff --git a/python/testData/psi/RaiseFrom.py b/python/testData/psi/RaiseFrom.py new file mode 100644 index 000000000000..0f9c322fd1a4 --- /dev/null +++ b/python/testData/psi/RaiseFrom.py @@ -0,0 +1 @@ +raise SyntaxError from exc diff --git a/python/testData/psi/RaiseFrom.txt b/python/testData/psi/RaiseFrom.txt new file mode 100644 index 000000000000..7f7c32007218 --- /dev/null +++ b/python/testData/psi/RaiseFrom.txt @@ -0,0 +1,11 @@ +PyFile:RaiseFrom.py + PyRaiseStatement + PsiElement(Py:RAISE_KEYWORD)('raise') + PsiWhiteSpace(' ') + PyReferenceExpression: SyntaxError + PsiElement(Py:IDENTIFIER)('SyntaxError') + PsiWhiteSpace(' ') + PsiElement(Py:FROM_KEYWORD)('from') + PsiWhiteSpace(' ') + PyReferenceExpression: exc + PsiElement(Py:IDENTIFIER)('exc') \ 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 39a09b561f8e..97ad423e4a8f 100644 --- a/python/testSrc/com/jetbrains/python/PythonParsingTest.java +++ b/python/testSrc/com/jetbrains/python/PythonParsingTest.java @@ -154,6 +154,10 @@ public class PythonParsingTest extends ParsingTestCase { doTest(LanguageLevel.PYTHON30); } + public void testRaiseFrom() throws Exception { + doTest(LanguageLevel.PYTHON30); + } + public void doTest() throws Exception { doTest(LanguageLevel.PYTHON25); }