mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Assignment to await expressions is forbidden now
This commit is contained in:
@@ -972,12 +972,21 @@ public class ExpressionParsing extends Parsing {
|
||||
|
||||
private boolean parseAwaitExpression(boolean isTargetExpression) {
|
||||
if (atToken(PyTokenTypes.AWAIT_KEYWORD)) {
|
||||
PsiBuilder.Marker expr = myBuilder.mark();
|
||||
final PsiBuilder.Marker expr = myBuilder.mark();
|
||||
myBuilder.advanceLexer();
|
||||
|
||||
if (!parseMemberExpression(isTargetExpression)) {
|
||||
myBuilder.error(message("PARSE.expected.expression"));
|
||||
expr.done(PyElementTypes.PREFIX_EXPRESSION);
|
||||
}
|
||||
expr.done(PyElementTypes.PREFIX_EXPRESSION);
|
||||
else {
|
||||
if (isTargetExpression) {
|
||||
expr.error("can't assign to await expression");
|
||||
} else {
|
||||
expr.done(PyElementTypes.PREFIX_EXPRESSION);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -2,4 +2,9 @@ async def f(x):
|
||||
await x
|
||||
|
||||
|
||||
async def g(y):
|
||||
await x = 5
|
||||
await y
|
||||
|
||||
|
||||
await = 1
|
||||
|
||||
@@ -20,6 +20,39 @@ PyFile:Await.py
|
||||
PyReferenceExpression: x
|
||||
PsiElement(Py:IDENTIFIER)('x')
|
||||
PsiWhiteSpace('\n\n\n')
|
||||
PyFunction('g')
|
||||
PsiElement(Py:ASYNC_KEYWORD)('async')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(Py:DEF_KEYWORD)('def')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(Py:IDENTIFIER)('g')
|
||||
PyParameterList
|
||||
PsiElement(Py:LPAR)('(')
|
||||
PyNamedParameter('y')
|
||||
PsiElement(Py:IDENTIFIER)('y')
|
||||
PsiElement(Py:RPAR)(')')
|
||||
PsiElement(Py:COLON)(':')
|
||||
PsiWhiteSpace('\n ')
|
||||
PyStatementList
|
||||
PyAssignmentStatement
|
||||
PsiErrorElement:can't assign to await expression
|
||||
PsiElement(Py:AWAIT_KEYWORD)('await')
|
||||
PsiWhiteSpace(' ')
|
||||
PyTargetExpression: x
|
||||
PsiElement(Py:IDENTIFIER)('x')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(Py:EQ)('=')
|
||||
PsiWhiteSpace(' ')
|
||||
PyNumericLiteralExpression
|
||||
PsiElement(Py:INTEGER_LITERAL)('5')
|
||||
PsiWhiteSpace('\n ')
|
||||
PyExpressionStatement
|
||||
PyPrefixExpression
|
||||
PsiElement(Py:AWAIT_KEYWORD)('await')
|
||||
PsiWhiteSpace(' ')
|
||||
PyReferenceExpression: y
|
||||
PsiElement(Py:IDENTIFIER)('y')
|
||||
PsiWhiteSpace('\n\n\n')
|
||||
PyAssignmentStatement
|
||||
PyTargetExpression: await
|
||||
PsiElement(Py:IDENTIFIER)('await')
|
||||
|
||||
Reference in New Issue
Block a user