mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 04:45:01 +00:00
Make Parameters
an optional field on ExprLambda
(#6669)
## Summary If a lambda doesn't contain any parameters, or any parameter _tokens_ (like `*`), we can use `None` for the parameters. This feels like a better representation to me, since, e.g., what should the `TextRange` be for a non-existent set of parameters? It also allows us to remove several sites where we check if the `Parameters` is empty by seeing if it contains any arguments, so semantically, we're already trying to detect and model around this elsewhere. Changing this also fixes a number of issues with dangling comments in parameter-less lambdas, since those comments are now automatically marked as dangling on the lambda. (As-is, we were also doing something not-great whereby the lambda was responsible for formatting dangling comments on the parameters, which has been removed.) Closes https://github.com/astral-sh/ruff/issues/6646. Closes https://github.com/astral-sh/ruff/issues/6647. ## Test Plan `cargo test`
This commit is contained in:
parent
ea72d5feba
commit
6a5acde226
30 changed files with 517 additions and 412 deletions
|
@ -10,51 +10,53 @@ Ok(
|
|||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 0..20,
|
||||
parameters: Parameters {
|
||||
range: 7..17,
|
||||
posonlyargs: [],
|
||||
args: [],
|
||||
vararg: None,
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 10..11,
|
||||
parameter: Parameter {
|
||||
parameters: Some(
|
||||
Parameters {
|
||||
range: 7..17,
|
||||
posonlyargs: [],
|
||||
args: [],
|
||||
vararg: None,
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
parameter: Parameter {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 10..11,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 13..14,
|
||||
parameter: Parameter {
|
||||
ParameterWithDefault {
|
||||
range: 13..14,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
parameter: Parameter {
|
||||
range: 13..14,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 13..14,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 16..17,
|
||||
parameter: Parameter {
|
||||
ParameterWithDefault {
|
||||
range: 16..17,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
parameter: Parameter {
|
||||
range: 16..17,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 16..17,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
),
|
||||
body: Constant(
|
||||
ExprConstant {
|
||||
range: 19..20,
|
||||
|
|
|
@ -10,71 +10,73 @@ Ok(
|
|||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 0..26,
|
||||
parameters: Parameters {
|
||||
range: 7..23,
|
||||
posonlyargs: [],
|
||||
args: [],
|
||||
vararg: None,
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 10..11,
|
||||
parameter: Parameter {
|
||||
parameters: Some(
|
||||
Parameters {
|
||||
range: 7..23,
|
||||
posonlyargs: [],
|
||||
args: [],
|
||||
vararg: None,
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
parameter: Parameter {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 10..11,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 13..17,
|
||||
parameter: Parameter {
|
||||
range: 13..14,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
ParameterWithDefault {
|
||||
range: 13..17,
|
||||
parameter: Parameter {
|
||||
range: 13..14,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
Constant(
|
||||
ExprConstant {
|
||||
range: 15..17,
|
||||
value: Int(
|
||||
20,
|
||||
),
|
||||
kind: None,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 13..14,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
Constant(
|
||||
ExprConstant {
|
||||
range: 15..17,
|
||||
value: Int(
|
||||
20,
|
||||
),
|
||||
kind: None,
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 19..23,
|
||||
parameter: Parameter {
|
||||
range: 19..20,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 19..23,
|
||||
parameter: Parameter {
|
||||
range: 19..20,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
Constant(
|
||||
ExprConstant {
|
||||
range: 21..23,
|
||||
value: Int(
|
||||
30,
|
||||
),
|
||||
kind: None,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 19..20,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
Constant(
|
||||
ExprConstant {
|
||||
range: 21..23,
|
||||
value: Int(
|
||||
30,
|
||||
),
|
||||
kind: None,
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
),
|
||||
body: Constant(
|
||||
ExprConstant {
|
||||
range: 25..26,
|
||||
|
|
|
@ -10,14 +10,7 @@ Ok(
|
|||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 0..9,
|
||||
parameters: Parameters {
|
||||
range: 6..6,
|
||||
posonlyargs: [],
|
||||
args: [],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
parameters: None,
|
||||
body: Constant(
|
||||
ExprConstant {
|
||||
range: 8..9,
|
||||
|
|
|
@ -10,76 +10,78 @@ Ok(
|
|||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 0..26,
|
||||
parameters: Parameters {
|
||||
range: 7..23,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 7..8,
|
||||
parameter: Parameter {
|
||||
parameters: Some(
|
||||
Parameters {
|
||||
range: 7..23,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 7..8,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
parameter: Parameter {
|
||||
range: 7..8,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 7..8,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 10..11,
|
||||
parameter: Parameter {
|
||||
ParameterWithDefault {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
parameter: Parameter {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 10..11,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 13..14,
|
||||
parameter: Parameter {
|
||||
ParameterWithDefault {
|
||||
range: 13..14,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
parameter: Parameter {
|
||||
range: 13..14,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 13..14,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 19..20,
|
||||
parameter: Parameter {
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [
|
||||
ParameterWithDefault {
|
||||
range: 19..20,
|
||||
name: Identifier {
|
||||
id: "d",
|
||||
parameter: Parameter {
|
||||
range: 19..20,
|
||||
name: Identifier {
|
||||
id: "d",
|
||||
range: 19..20,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 22..23,
|
||||
parameter: Parameter {
|
||||
ParameterWithDefault {
|
||||
range: 22..23,
|
||||
name: Identifier {
|
||||
id: "e",
|
||||
parameter: Parameter {
|
||||
range: 22..23,
|
||||
name: Identifier {
|
||||
id: "e",
|
||||
range: 22..23,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
],
|
||||
kwarg: None,
|
||||
},
|
||||
),
|
||||
body: Constant(
|
||||
ExprConstant {
|
||||
range: 25..26,
|
||||
|
|
|
@ -10,51 +10,53 @@ Ok(
|
|||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 0..17,
|
||||
parameters: Parameters {
|
||||
range: 7..14,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 7..8,
|
||||
parameter: Parameter {
|
||||
parameters: Some(
|
||||
Parameters {
|
||||
range: 7..14,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 7..8,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
parameter: Parameter {
|
||||
range: 7..8,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 7..8,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 10..11,
|
||||
parameter: Parameter {
|
||||
ParameterWithDefault {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
parameter: Parameter {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 10..11,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 13..14,
|
||||
parameter: Parameter {
|
||||
ParameterWithDefault {
|
||||
range: 13..14,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
parameter: Parameter {
|
||||
range: 13..14,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 13..14,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
),
|
||||
body: Constant(
|
||||
ExprConstant {
|
||||
range: 16..17,
|
||||
|
|
|
@ -10,71 +10,73 @@ Ok(
|
|||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 0..23,
|
||||
parameters: Parameters {
|
||||
range: 7..20,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 7..8,
|
||||
parameter: Parameter {
|
||||
parameters: Some(
|
||||
Parameters {
|
||||
range: 7..20,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 7..8,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
parameter: Parameter {
|
||||
range: 7..8,
|
||||
name: Identifier {
|
||||
id: "a",
|
||||
range: 7..8,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 10..14,
|
||||
parameter: Parameter {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
ParameterWithDefault {
|
||||
range: 10..14,
|
||||
parameter: Parameter {
|
||||
range: 10..11,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
Constant(
|
||||
ExprConstant {
|
||||
range: 12..14,
|
||||
value: Int(
|
||||
20,
|
||||
),
|
||||
kind: None,
|
||||
name: Identifier {
|
||||
id: "b",
|
||||
range: 10..11,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
Constant(
|
||||
ExprConstant {
|
||||
range: 12..14,
|
||||
value: Int(
|
||||
20,
|
||||
),
|
||||
kind: None,
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 16..20,
|
||||
parameter: Parameter {
|
||||
range: 16..17,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 16..20,
|
||||
parameter: Parameter {
|
||||
range: 16..17,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
Constant(
|
||||
ExprConstant {
|
||||
range: 18..20,
|
||||
value: Int(
|
||||
30,
|
||||
),
|
||||
kind: None,
|
||||
name: Identifier {
|
||||
id: "c",
|
||||
range: 16..17,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
default: Some(
|
||||
Constant(
|
||||
ExprConstant {
|
||||
range: 18..20,
|
||||
value: Int(
|
||||
30,
|
||||
),
|
||||
kind: None,
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
),
|
||||
body: Constant(
|
||||
ExprConstant {
|
||||
range: 22..23,
|
||||
|
|
|
@ -727,27 +727,29 @@ expression: "parse_suite(source, \"<test>\").unwrap()"
|
|||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 591..619,
|
||||
parameters: Parameters {
|
||||
range: 598..603,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 598..603,
|
||||
parameter: Parameter {
|
||||
parameters: Some(
|
||||
Parameters {
|
||||
range: 598..603,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 598..603,
|
||||
name: Identifier {
|
||||
id: "query",
|
||||
parameter: Parameter {
|
||||
range: 598..603,
|
||||
name: Identifier {
|
||||
id: "query",
|
||||
range: 598..603,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
),
|
||||
body: Compare(
|
||||
ExprCompare {
|
||||
range: 605..619,
|
||||
|
|
|
@ -9,39 +9,41 @@ expression: parse_ast
|
|||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 0..18,
|
||||
parameters: Parameters {
|
||||
range: 7..11,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 7..8,
|
||||
parameter: Parameter {
|
||||
parameters: Some(
|
||||
Parameters {
|
||||
range: 7..11,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 7..8,
|
||||
name: Identifier {
|
||||
id: "x",
|
||||
parameter: Parameter {
|
||||
range: 7..8,
|
||||
name: Identifier {
|
||||
id: "x",
|
||||
range: 7..8,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
ParameterWithDefault {
|
||||
range: 10..11,
|
||||
parameter: Parameter {
|
||||
ParameterWithDefault {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "y",
|
||||
parameter: Parameter {
|
||||
range: 10..11,
|
||||
name: Identifier {
|
||||
id: "y",
|
||||
range: 10..11,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
),
|
||||
body: BinOp(
|
||||
ExprBinOp {
|
||||
range: 13..18,
|
||||
|
|
|
@ -9,14 +9,7 @@ expression: parse_ast
|
|||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 0..9,
|
||||
parameters: Parameters {
|
||||
range: 6..6,
|
||||
posonlyargs: [],
|
||||
args: [],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
parameters: None,
|
||||
body: Constant(
|
||||
ExprConstant {
|
||||
range: 8..9,
|
||||
|
|
|
@ -663,27 +663,29 @@ expression: "parse_suite(source, \"<test>\").unwrap()"
|
|||
value: Lambda(
|
||||
ExprLambda {
|
||||
range: 507..535,
|
||||
parameters: Parameters {
|
||||
range: 514..519,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 514..519,
|
||||
parameter: Parameter {
|
||||
parameters: Some(
|
||||
Parameters {
|
||||
range: 514..519,
|
||||
posonlyargs: [],
|
||||
args: [
|
||||
ParameterWithDefault {
|
||||
range: 514..519,
|
||||
name: Identifier {
|
||||
id: "query",
|
||||
parameter: Parameter {
|
||||
range: 514..519,
|
||||
name: Identifier {
|
||||
id: "query",
|
||||
range: 514..519,
|
||||
},
|
||||
annotation: None,
|
||||
},
|
||||
annotation: None,
|
||||
default: None,
|
||||
},
|
||||
default: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
],
|
||||
vararg: None,
|
||||
kwonlyargs: [],
|
||||
kwarg: None,
|
||||
},
|
||||
),
|
||||
body: Compare(
|
||||
ExprCompare {
|
||||
range: 521..535,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue