mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 21:05:08 +00:00
Support type alias statements in simple statement positions (#8916)
<!-- Thank you for contributing to Ruff! To help us out with reviewing, please consider the following: - Does this pull request include a summary of the change? (See below.) - Does this pull request include a descriptive title? - Does this pull request include references to any relevant issues? --> ## Summary Our `SoftKeywordTokenizer` only respected soft keywords in compound statement positions -- for example, at the start of a logical line: ```python type X = int ``` However, type aliases can also appear in simple statement positions, like: ```python class Class: type X = int ``` (Note that `match` and `case` are _not_ valid keywords in such positions.) This PR upgrades the tokenizer to track both kinds of valid positions. Closes https://github.com/astral-sh/ruff/issues/8900. Closes https://github.com/astral-sh/ruff/issues/8899. ## Test Plan `cargo test`
This commit is contained in:
parent
073eddb1d9
commit
20782ab02c
4 changed files with 224 additions and 18 deletions
|
@ -849,4 +849,98 @@ expression: "parse_suite(source, \"<test>\").unwrap()"
|
|||
),
|
||||
},
|
||||
),
|
||||
TypeAlias(
|
||||
StmtTypeAlias {
|
||||
range: 590..602,
|
||||
name: Name(
|
||||
ExprName {
|
||||
range: 595..596,
|
||||
id: "X",
|
||||
ctx: Store,
|
||||
},
|
||||
),
|
||||
type_params: None,
|
||||
value: Name(
|
||||
ExprName {
|
||||
range: 599..602,
|
||||
id: "int",
|
||||
ctx: Load,
|
||||
},
|
||||
),
|
||||
},
|
||||
),
|
||||
TypeAlias(
|
||||
StmtTypeAlias {
|
||||
range: 604..616,
|
||||
name: Name(
|
||||
ExprName {
|
||||
range: 609..610,
|
||||
id: "X",
|
||||
ctx: Store,
|
||||
},
|
||||
),
|
||||
type_params: None,
|
||||
value: Name(
|
||||
ExprName {
|
||||
range: 613..616,
|
||||
id: "str",
|
||||
ctx: Load,
|
||||
},
|
||||
),
|
||||
},
|
||||
),
|
||||
TypeAlias(
|
||||
StmtTypeAlias {
|
||||
range: 618..631,
|
||||
name: Name(
|
||||
ExprName {
|
||||
range: 623..624,
|
||||
id: "X",
|
||||
ctx: Store,
|
||||
},
|
||||
),
|
||||
type_params: None,
|
||||
value: Name(
|
||||
ExprName {
|
||||
range: 627..631,
|
||||
id: "type",
|
||||
ctx: Load,
|
||||
},
|
||||
),
|
||||
},
|
||||
),
|
||||
ClassDef(
|
||||
StmtClassDef {
|
||||
range: 632..653,
|
||||
decorator_list: [],
|
||||
name: Identifier {
|
||||
id: "X",
|
||||
range: 638..639,
|
||||
},
|
||||
type_params: None,
|
||||
arguments: None,
|
||||
body: [
|
||||
TypeAlias(
|
||||
StmtTypeAlias {
|
||||
range: 641..653,
|
||||
name: Name(
|
||||
ExprName {
|
||||
range: 646..647,
|
||||
id: "X",
|
||||
ctx: Store,
|
||||
},
|
||||
),
|
||||
type_params: None,
|
||||
value: Name(
|
||||
ExprName {
|
||||
range: 650..653,
|
||||
id: "int",
|
||||
ctx: Load,
|
||||
},
|
||||
),
|
||||
},
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
]
|
||||
|
|
|
@ -988,4 +988,44 @@ expression: "parse_suite(source, \"<test>\").unwrap()"
|
|||
),
|
||||
},
|
||||
),
|
||||
Expr(
|
||||
StmtExpr {
|
||||
range: 652..666,
|
||||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 652..666,
|
||||
parameters: Some(
|
||||
Parameters {
|
||||
range: 659..660,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 659..660,
|
||||
parameter: Parameter {
|
||||
range: 659..660,
|
||||
name: Identifier {
|
||||
id: "x",
|
||||
range: 659..660,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
),
|
||||
body: Name(
|
||||
ExprName {
|
||||
range: 662..666,
|
||||
id: "type",
|
||||
ctx: Load,
|
||||
},
|
||||
),
|
||||
},
|
||||
),
|
||||
},
|
||||
),
|
||||
]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue