diff --git a/python/src/com/jetbrains/python/parsing/ParsingScope.java b/python/src/com/jetbrains/python/parsing/ParsingScope.java index 49843bca27b3..2d4df7094ed4 100644 --- a/python/src/com/jetbrains/python/parsing/ParsingScope.java +++ b/python/src/com/jetbrains/python/parsing/ParsingScope.java @@ -43,6 +43,7 @@ public class ParsingScope { public ParsingScope withSuite() { final ParsingScope result = copy(); result.mySuite = true; + result.myAsync = myAsync; return result; } diff --git a/python/testData/psi/AwaitOnTheSameLineAsFor.py b/python/testData/psi/AwaitOnTheSameLineAsFor.py new file mode 100644 index 000000000000..50bd2369ce90 --- /dev/null +++ b/python/testData/psi/AwaitOnTheSameLineAsFor.py @@ -0,0 +1,2 @@ +async def y(a1, a2): + for i in range(10): a1.foo(await a1.x(a2)) \ No newline at end of file diff --git a/python/testData/psi/AwaitOnTheSameLineAsFor.txt b/python/testData/psi/AwaitOnTheSameLineAsFor.txt new file mode 100644 index 000000000000..0fb9690d6e4c --- /dev/null +++ b/python/testData/psi/AwaitOnTheSameLineAsFor.txt @@ -0,0 +1,63 @@ +PyFile:AwaitOnTheSameLineAsFor.py + PyFunction('y') + PsiElement(Py:ASYNC_KEYWORD)('async') + PsiWhiteSpace(' ') + PsiElement(Py:DEF_KEYWORD)('def') + PsiWhiteSpace(' ') + PsiElement(Py:IDENTIFIER)('y') + PyParameterList + PsiElement(Py:LPAR)('(') + PyNamedParameter('a1') + PsiElement(Py:IDENTIFIER)('a1') + PsiElement(Py:COMMA)(',') + PsiWhiteSpace(' ') + PyNamedParameter('a2') + PsiElement(Py:IDENTIFIER)('a2') + PsiElement(Py:RPAR)(')') + PsiElement(Py:COLON)(':') + PsiWhiteSpace('\n ') + PyStatementList + PyForStatement + PyForPart + PsiElement(Py:FOR_KEYWORD)('for') + PsiWhiteSpace(' ') + PyTargetExpression: i + PsiElement(Py:IDENTIFIER)('i') + PsiWhiteSpace(' ') + PsiElement(Py:IN_KEYWORD)('in') + PsiWhiteSpace(' ') + PyCallExpression: range + PyReferenceExpression: range + PsiElement(Py:IDENTIFIER)('range') + PyArgumentList + PsiElement(Py:LPAR)('(') + PyNumericLiteralExpression + PsiElement(Py:INTEGER_LITERAL)('10') + PsiElement(Py:RPAR)(')') + PsiElement(Py:COLON)(':') + PsiWhiteSpace(' ') + PyStatementList + PyExpressionStatement + PyCallExpression: a1.foo + PyReferenceExpression: foo + PyReferenceExpression: a1 + PsiElement(Py:IDENTIFIER)('a1') + PsiElement(Py:DOT)('.') + PsiElement(Py:IDENTIFIER)('foo') + PyArgumentList + PsiElement(Py:LPAR)('(') + PyPrefixExpression + PsiElement(Py:AWAIT_KEYWORD)('await') + PsiWhiteSpace(' ') + PyCallExpression: a1.x + PyReferenceExpression: x + PyReferenceExpression: a1 + PsiElement(Py:IDENTIFIER)('a1') + PsiElement(Py:DOT)('.') + PsiElement(Py:IDENTIFIER)('x') + PyArgumentList + PsiElement(Py:LPAR)('(') + PyReferenceExpression: a2 + PsiElement(Py:IDENTIFIER)('a2') + PsiElement(Py:RPAR)(')') + PsiElement(Py:RPAR)(')') \ 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 0b406c148740..71d3ddfcfba4 100644 --- a/python/testSrc/com/jetbrains/python/PythonParsingTest.java +++ b/python/testSrc/com/jetbrains/python/PythonParsingTest.java @@ -534,6 +534,11 @@ public class PythonParsingTest extends ParsingTestCase { doTest(LanguageLevel.PYTHON36); } + // PY-20682 + public void testAwaitOnTheSameLineAsFor() { + doTest(LanguageLevel.PYTHON35); + } + public void doTest(LanguageLevel languageLevel) { LanguageLevel prev = myLanguageLevel; myLanguageLevel = languageLevel;