mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 02:38:25 +00:00
[syntax-errors] Named expressions in decorators before Python 3.9 (#16386)
Summary -- This PR detects the relaxed grammar for decorators proposed in [PEP 614](https://peps.python.org/pep-0614/) on Python 3.8 and lower. The 3.8 grammar for decorators is [here](https://docs.python.org/3.8/reference/compound_stmts.html#grammar-token-decorators): ``` decorators ::= decorator+ decorator ::= "@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE dotted_name ::= identifier ("." identifier)* ``` in contrast to the current grammar [here](https://docs.python.org/3/reference/compound_stmts.html#grammar-token-python-grammar-decorators) ``` decorators ::= decorator+ decorator ::= "@" assignment_expression NEWLINE assignment_expression ::= [identifier ":="] expression ``` Test Plan -- New inline parser tests.
This commit is contained in:
parent
d0623888b3
commit
318f503714
16 changed files with 876 additions and 3 deletions
|
@ -0,0 +1,3 @@
|
|||
# parse_options: { "target-version": "3.8" }
|
||||
@buttons.clicked.connect
|
||||
def spam(): ...
|
|
@ -0,0 +1,3 @@
|
|||
# parse_options: { "target-version": "3.8" }
|
||||
@eval("buttons[0].clicked.connect")
|
||||
def spam(): ...
|
|
@ -0,0 +1,4 @@
|
|||
# parse_options: { "target-version": "3.8" }
|
||||
def _(x): return x
|
||||
@_(buttons[0].clicked.connect)
|
||||
def spam(): ...
|
|
@ -0,0 +1,5 @@
|
|||
# parse_options: { "target-version": "3.9" }
|
||||
@buttons[0].clicked.connect
|
||||
def spam(): ...
|
||||
@(x := lambda x: x)(foo)
|
||||
def bar(): ...
|
Loading…
Add table
Add a link
Reference in a new issue