Respect trailing whitespace in comprehension fixes (#554)

This commit is contained in:
Charlie Marsh 2022-11-02 21:08:17 -04:00 committed by GitHub
parent 9948be0145
commit 416c338237
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 92 additions and 12 deletions

View File

@ -1 +1,4 @@
x = list(x for x in range(3)) x = list(x for x in range(3))
x = list(
x for x in range(3)
)

View File

@ -1 +1,4 @@
x = set(x for x in range(3)) x = set(x for x in range(3))
x = set(
x for x in range(3)
)

View File

@ -1 +1,4 @@
s = set([x for x in range(3)]) s = set([x for x in range(3)])
s = set(
[x for x in range(3)]
)

View File

@ -37,8 +37,13 @@ pub fn fix_unnecessary_generator_list(locator: &SourceCodeLocator, expr: &Expr)
} else { } else {
return Err(anyhow::anyhow!("Expected node to be: Expression::Call.")); return Err(anyhow::anyhow!("Expected node to be: Expression::Call."));
}; };
let arg = if let Some(Arg { value, .. }) = call.args.first_mut() { let (arg, whitespace_after_arg) = if let Some(Arg {
value value,
whitespace_after_arg,
..
}) = call.args.first_mut()
{
(value, whitespace_after_arg)
} else { } else {
return Err(anyhow::anyhow!("Expected node to be: Arg.")); return Err(anyhow::anyhow!("Expected node to be: Arg."));
}; };
@ -57,7 +62,7 @@ pub fn fix_unnecessary_generator_list(locator: &SourceCodeLocator, expr: &Expr)
whitespace_after: call.whitespace_before_args.clone(), whitespace_after: call.whitespace_before_args.clone(),
}, },
rbracket: RightSquareBracket { rbracket: RightSquareBracket {
whitespace_before: call.whitespace_after_func.clone(), whitespace_before: whitespace_after_arg.clone(),
}, },
lpar: generator_exp.lpar.clone(), lpar: generator_exp.lpar.clone(),
rpar: generator_exp.rpar.clone(), rpar: generator_exp.rpar.clone(),
@ -101,8 +106,13 @@ pub fn fix_unnecessary_generator_set(locator: &SourceCodeLocator, expr: &Expr) -
} else { } else {
return Err(anyhow::anyhow!("Expected node to be: Expression::Call.")); return Err(anyhow::anyhow!("Expected node to be: Expression::Call."));
}; };
let arg = if let Some(Arg { value, .. }) = call.args.first_mut() { let (arg, whitespace_after_arg) = if let Some(Arg {
value value,
whitespace_after_arg,
..
}) = call.args.first_mut()
{
(value, whitespace_after_arg)
} else { } else {
return Err(anyhow::anyhow!("Expected node to be: Arg.")); return Err(anyhow::anyhow!("Expected node to be: Arg."));
}; };
@ -121,7 +131,7 @@ pub fn fix_unnecessary_generator_set(locator: &SourceCodeLocator, expr: &Expr) -
whitespace_after: call.whitespace_before_args.clone(), whitespace_after: call.whitespace_before_args.clone(),
}, },
rbrace: RightCurlyBrace { rbrace: RightCurlyBrace {
whitespace_before: call.whitespace_after_func.clone(), whitespace_before: whitespace_after_arg.clone(),
}, },
lpar: generator_exp.lpar.clone(), lpar: generator_exp.lpar.clone(),
rpar: generator_exp.rpar.clone(), rpar: generator_exp.rpar.clone(),
@ -168,8 +178,13 @@ pub fn fix_unnecessary_list_comprehension_set(
} else { } else {
return Err(anyhow::anyhow!("Expected node to be: Expression::Call.")); return Err(anyhow::anyhow!("Expected node to be: Expression::Call."));
}; };
let arg = if let Some(Arg { value, .. }) = call.args.first_mut() { let (arg, whitespace_after_arg) = if let Some(Arg {
value value,
whitespace_after_arg,
..
}) = call.args.first_mut()
{
(value, whitespace_after_arg)
} else { } else {
return Err(anyhow::anyhow!("Expected node to be: Arg.")); return Err(anyhow::anyhow!("Expected node to be: Arg."));
}; };
@ -188,7 +203,7 @@ pub fn fix_unnecessary_list_comprehension_set(
whitespace_after: call.whitespace_before_args.clone(), whitespace_after: call.whitespace_before_args.clone(),
}, },
rbrace: RightCurlyBrace { rbrace: RightCurlyBrace {
whitespace_before: call.whitespace_after_func.clone(), whitespace_before: whitespace_after_arg.clone(),
}, },
lpar: list_comp.lpar.clone(), lpar: list_comp.lpar.clone(),
rpar: list_comp.rpar.clone(), rpar: list_comp.rpar.clone(),
@ -232,8 +247,13 @@ pub fn fix_unnecessary_literal_set(locator: &SourceCodeLocator, expr: &Expr) ->
} else { } else {
return Err(anyhow::anyhow!("Expected node to be: Expression::Call.")); return Err(anyhow::anyhow!("Expected node to be: Expression::Call."));
}; };
let arg = if let Some(Arg { value, .. }) = call.args.first_mut() { let (arg, whitespace_after_arg) = if let Some(Arg {
value value,
whitespace_after_arg,
..
}) = call.args.first_mut()
{
(value, whitespace_after_arg)
} else { } else {
return Err(anyhow::anyhow!("Expected node to be: Arg.")); return Err(anyhow::anyhow!("Expected node to be: Arg."));
}; };
@ -256,7 +276,7 @@ pub fn fix_unnecessary_literal_set(locator: &SourceCodeLocator, expr: &Expr) ->
whitespace_after: call.whitespace_before_args.clone(), whitespace_after: call.whitespace_before_args.clone(),
}, },
rbrace: RightCurlyBrace { rbrace: RightCurlyBrace {
whitespace_before: call.whitespace_after_func.clone(), whitespace_before: whitespace_after_arg.clone(),
}, },
lpar: Default::default(), lpar: Default::default(),
rpar: Default::default(), rpar: Default::default(),

View File

@ -19,4 +19,21 @@ expression: checks
row: 1 row: 1
column: 29 column: 29
applied: false applied: false
- kind: UnnecessaryGeneratorList
location:
row: 2
column: 4
end_location:
row: 4
column: 1
fix:
patch:
content: "[\n x for x in range(3)\n]"
location:
row: 2
column: 4
end_location:
row: 4
column: 1
applied: false

View File

@ -19,4 +19,21 @@ expression: checks
row: 1 row: 1
column: 28 column: 28
applied: false applied: false
- kind: UnnecessaryGeneratorSet
location:
row: 2
column: 4
end_location:
row: 4
column: 1
fix:
patch:
content: "{\n x for x in range(3)\n}"
location:
row: 2
column: 4
end_location:
row: 4
column: 1
applied: false

View File

@ -19,4 +19,21 @@ expression: checks
row: 1 row: 1
column: 30 column: 30
applied: false applied: false
- kind: UnnecessaryListComprehensionSet
location:
row: 2
column: 4
end_location:
row: 4
column: 1
fix:
patch:
content: "{\n x for x in range(3)\n}"
location:
row: 2
column: 4
end_location:
row: 4
column: 1
applied: false