mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Fixed false negative in parsing incomplete 'yield from' expression (PY-6733)
This commit is contained in:
@@ -533,10 +533,18 @@ public class ExpressionParsing extends Parsing {
|
||||
myBuilder.advanceLexer();
|
||||
if (myBuilder.getTokenType() == PyTokenTypes.FROM_KEYWORD) {
|
||||
myBuilder.advanceLexer();
|
||||
final boolean parsed = parseTupleExpression(false, isTargetExpression, false);
|
||||
if (!parsed) {
|
||||
myBuilder.error(message("PARSE.expected.expression"));
|
||||
}
|
||||
yieldExpr.done(PyElementTypes.YIELD_EXPRESSION);
|
||||
return parsed;
|
||||
}
|
||||
else {
|
||||
parseTupleExpression(false, isTargetExpression, false);
|
||||
yieldExpr.done(PyElementTypes.YIELD_EXPRESSION);
|
||||
return true;
|
||||
}
|
||||
parseTupleExpression(false, isTargetExpression, false);
|
||||
yieldExpr.done(PyElementTypes.YIELD_EXPRESSION);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return parseTupleExpression(false, isTargetExpression, false);
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
def f():
|
||||
yield from
|
||||
@@ -0,0 +1,18 @@
|
||||
PyFile:YieldFromNoExpr.py
|
||||
PyFunction('f')
|
||||
PsiElement(Py:DEF_KEYWORD)('def')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(Py:IDENTIFIER)('f')
|
||||
PyParameterList
|
||||
PsiElement(Py:LPAR)('(')
|
||||
PsiElement(Py:RPAR)(')')
|
||||
PsiElement(Py:COLON)(':')
|
||||
PsiWhiteSpace('\n ')
|
||||
PyStatementList
|
||||
PyExpressionStatement
|
||||
PyYieldExpression
|
||||
PsiElement(Py:YIELD_KEYWORD)('yield')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(Py:FROM_KEYWORD)('from')
|
||||
PsiErrorElement:expression expected
|
||||
<empty list>
|
||||
@@ -323,6 +323,11 @@ public class PythonParsingTest extends ParsingTestCase {
|
||||
doTest(LanguageLevel.PYTHON33);
|
||||
}
|
||||
|
||||
// PY-6733
|
||||
public void testYieldFromNoExpr() {
|
||||
doTest(LanguageLevel.PYTHON33);
|
||||
}
|
||||
|
||||
public void doTest() {
|
||||
doTest(LanguageLevel.PYTHON25);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user