PY-64304 EA-247016 Report illegal usages of "await" expressions even if there is no operand

In other words, in a statement like "await = 42" there are now both a warning about
the missing operand and a warning that an await expression cannot be used as
an assignment target. This behavior is consistent with other expressions where
additional parsing errors are not special-cased.

GitOrigin-RevId: 37a68eacc7ec042435c185f9ddd8bc2eea42b40f
This commit is contained in:
Mikhail Golubev
2024-04-24 09:03:57 +00:00
committed by intellij-monorepo-bot
parent b9d7fee816
commit fcf665e761
7 changed files with 22 additions and 22 deletions
@@ -299,7 +299,7 @@ public class AssignTargetAnnotator extends PyAnnotator {
@Override
public void visitPyPrefixExpression(@NotNull PyPrefixExpression node) {
if (node.getOperator() == PyTokenTypes.AWAIT_KEYWORD && node.getOperand() != null) {
if (node.getOperator() == PyTokenTypes.AWAIT_KEYWORD) {
getHolder().newAnnotation(HighlightSeverity.ERROR, message("ANN.cant.assign.to.await.expr")).range(node).create();
}
}
@@ -17,4 +17,4 @@ def <error descr="Identifier expected">await</error>():
pass
<error descr="'await' outside async function">await</error><error descr="Expression expected"> </error>= 10
<error descr="'await' outside async function"><error descr="Cannot assign to await expression">await</error></error><error descr="Expression expected"> </error>= 10
@@ -1,5 +1,5 @@
async def f11(x):
y = {await<error descr="Expression expected">:</error> 10 for await<error descr="Expression expected"> </error>in []} # fail
y = {await<error descr="Expression expected">:</error> 10 for <error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>in []} # fail
await x
@@ -9,7 +9,7 @@ def f12(x):
async def f21(x):
y = {mapper(await<error descr="Expression expected">)</error>: 10 for await<error descr="Expression expected"> </error>in []} # fail
y = {mapper(await<error descr="Expression expected">)</error>: 10 for <error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>in []} # fail
await x
@@ -19,7 +19,7 @@ def f22(x):
async def f31(x):
await<error descr="Expression expected"> </error>= [] # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= [] # fail
y = {i: 10 for i in await<error descr="Expression expected">}</error> # fail
await x
@@ -51,7 +51,7 @@ async def f44(x):
async def f51():
await<error descr="Expression expected"> </error>= 5 # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= 5 # fail
return {await<error descr="Expression expected">:</error> 10} # fail
@@ -61,7 +61,7 @@ def f52():
async def f61():
await<error descr="Expression expected"> </error>= 5 # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= 5 # fail
return {"a": 10, await<error descr="Expression expected">:</error> 10, "b": 10} # fail
@@ -1,5 +1,5 @@
async def f11(x):
y = (await<error descr="Expression expected"> </error>for await<error descr="Expression expected"> </error>in []) # fail
y = (await<error descr="Expression expected"> </error>for <error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>in []) # fail
await x
@@ -9,7 +9,7 @@ def f12(x):
async def f21(x):
y = (mapper(await<error descr="Expression expected">)</error> for await<error descr="Expression expected"> </error>in []) # fail
y = (mapper(await<error descr="Expression expected">)</error> for <error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>in []) # fail
await x
@@ -19,7 +19,7 @@ def f22(x):
async def f31(x):
await<error descr="Expression expected"> </error>= [] # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= [] # fail
y = (i for i in await<error descr="Expression expected">)</error> # fail
await x
@@ -1,5 +1,5 @@
async def f11(x):
y = [await<error descr="Expression expected"> </error>for await<error descr="Expression expected"> </error>in []] # fail
y = [await<error descr="Expression expected"> </error>for <error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>in []] # fail
await x
@@ -9,7 +9,7 @@ def f12(x):
async def f21(x):
y = [mapper(await<error descr="Expression expected">)</error> for await<error descr="Expression expected"> </error>in []] # fail
y = [mapper(await<error descr="Expression expected">)</error> for <error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>in []] # fail
await x
@@ -19,7 +19,7 @@ def f22(x):
async def f31(x):
await<error descr="Expression expected"> </error>= [] # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= [] # fail
y = [i for i in await<error descr="Expression expected">]</error> # fail
await x
@@ -51,7 +51,7 @@ async def f44(x):
async def f51():
await<error descr="Expression expected"> </error>= 5 # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= 5 # fail
return [await<error descr="Expression expected">]</error> # fail
@@ -61,7 +61,7 @@ def f52():
async def f61():
await<error descr="Expression expected"> </error>= 5 # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= 5 # fail
return ["a", await<error descr="Expression expected">,</error> "b"] # fail
@@ -1,5 +1,5 @@
async def f11(x):
y = {await<error descr="Expression expected"> </error>for await<error descr="Expression expected"> </error>in []} # fail
y = {await<error descr="Expression expected"> </error>for <error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>in []} # fail
await x
@@ -9,7 +9,7 @@ def f12(x):
async def f21(x):
y = {mapper(await<error descr="Expression expected">)</error> for await<error descr="Expression expected"> </error>in []} # fail
y = {mapper(await<error descr="Expression expected">)</error> for <error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>in []} # fail
await x
@@ -19,7 +19,7 @@ def f22(x):
async def f31(x):
await<error descr="Expression expected"> </error>= [] # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= [] # fail
y = {i for i in await<error descr="Expression expected">}</error> # fail
await x
@@ -51,7 +51,7 @@ async def f44(x):
async def f51():
await<error descr="Expression expected"> </error>= 5 # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= 5 # fail
return {await<error descr="Expression expected">}</error> # fail
@@ -61,7 +61,7 @@ def f52():
async def f61():
await<error descr="Expression expected"> </error>= 5 # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= 5 # fail
return {"a", await<error descr="Expression expected">,</error> "b"} # fail
+2 -2
View File
@@ -1,5 +1,5 @@
async def f51():
await<error descr="Expression expected"> </error>= 5 # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= 5 # fail
return (await<error descr="Expression expected">)</error> # fail
@@ -9,7 +9,7 @@ def f52():
async def f61():
await<error descr="Expression expected"> </error>= 5 # fail
<error descr="Cannot assign to await expression">await</error><error descr="Expression expected"> </error>= 5 # fail
return ("a", await<error descr="Expression expected">,</error> "b") # fail