Skip to content

Commit f80c1e6

Browse files
committed
fix shorthand struct initialization lint
1 parent b7590fa commit f80c1e6

7 files changed

+14
-48
lines changed

proptest-macro/src/property_test/codegen/snapshots/proptest_macro__property_test__codegen__snapshot_tests__arg_ident_and_pattern.snap

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,13 +1475,6 @@ TokenStream [
14751475
Group {
14761476
delimiter: Brace,
14771477
stream: TokenStream [
1478-
Ident {
1479-
sym: a,
1480-
},
1481-
Punct {
1482-
char: ':',
1483-
spacing: Alone,
1484-
},
14851478
Ident {
14861479
sym: a,
14871480
},
@@ -1518,13 +1511,6 @@ TokenStream [
15181511
Ident {
15191512
sym: d,
15201513
},
1521-
Punct {
1522-
char: ':',
1523-
spacing: Alone,
1524-
},
1525-
Ident {
1526-
sym: d,
1527-
},
15281514
Punct {
15291515
char: ',',
15301516
spacing: Alone,
@@ -1580,13 +1566,6 @@ TokenStream [
15801566
Ident {
15811567
sym: h,
15821568
},
1583-
Punct {
1584-
char: ':',
1585-
spacing: Alone,
1586-
},
1587-
Ident {
1588-
sym: h,
1589-
},
15901569
Punct {
15911570
char: ',',
15921571
spacing: Alone,

proptest-macro/src/property_test/codegen/snapshots/proptest_macro__property_test__codegen__snapshot_tests__many_params.snap

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,13 +1090,6 @@ TokenStream [
10901090
Group {
10911091
delimiter: Brace,
10921092
stream: TokenStream [
1093-
Ident {
1094-
sym: x,
1095-
},
1096-
Punct {
1097-
char: ':',
1098-
spacing: Alone,
1099-
},
11001093
Ident {
11011094
sym: x,
11021095
},
@@ -1107,13 +1100,6 @@ TokenStream [
11071100
Ident {
11081101
sym: y,
11091102
},
1110-
Punct {
1111-
char: ':',
1112-
spacing: Alone,
1113-
},
1114-
Ident {
1115-
sym: y,
1116-
},
11171103
Punct {
11181104
char: ',',
11191105
spacing: Alone,

proptest-macro/src/property_test/codegen/snapshots/proptest_macro__property_test__codegen__snapshot_tests__simple.snap

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,13 +1041,6 @@ TokenStream [
10411041
Group {
10421042
delimiter: Brace,
10431043
stream: TokenStream [
1044-
Ident {
1045-
sym: x,
1046-
},
1047-
Punct {
1048-
char: ':',
1049-
spacing: Alone,
1050-
},
10511044
Ident {
10521045
sym: x,
10531046
},

proptest-macro/src/property_test/codegen/test_body.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use proc_macro2::TokenStream;
22
use quote::{quote, ToTokens};
3-
use syn::{parse2, Block, Expr, Ident, ReturnType, Type, TypeTuple};
3+
use syn::{parse2, Block, Expr, Ident, Pat, ReturnType, Type, TypeTuple};
44

55
use crate::property_test::{options::Options, utils::Argument};
66

@@ -22,9 +22,17 @@ pub(super) fn body(
2222

2323
// convert each arg to `field0: x`
2424
let struct_fields = args.iter().enumerate().map(|(index, arg)| {
25-
let pat = &arg.pat_ty.pat;
25+
let pat = arg.pat_ty.pat.as_ref();
2626
let field_name = nth_field_name(args, index);
27-
quote!(#field_name: #pat,)
27+
28+
// If the pattern is an ident, we know that the field name is equal to the pattern name.
29+
// This means we need to avoid generating: `x: x`, which would trigger a lint suggesting
30+
// shorthand struct initialization.
31+
32+
match pat {
33+
Pat::Ident(_) => quote!(#field_name,),
34+
_ => quote!(#field_name: #pat,),
35+
}
2836
});
2937

3038
// e.g. FooArgs { field0: x, field1: (y, z), }

proptest-macro/src/property_test/tests/snapshots/proptest_macro__property_test__tests__snapshot_tests__basic_derive_example.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ fn foo() {
3434
::proptest::sugar::NamedArguments(stringify!(FooArgs), values)
3535
},
3636
),
37-
|::proptest::sugar::NamedArguments(_, FooArgs { x: x, y: y })| {
37+
|::proptest::sugar::NamedArguments(_, FooArgs { x, y })| {
3838
let result = {
3939
let x = 1;
4040
};

proptest-macro/src/property_test/tests/snapshots/proptest_macro__property_test__tests__snapshot_tests__custom_strategy.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fn foo() {
3333
::proptest::sugar::NamedArguments(stringify!(FooArgs), values)
3434
},
3535
),
36-
|::proptest::sugar::NamedArguments(_, FooArgs { x: x, y: y })| {
36+
|::proptest::sugar::NamedArguments(_, FooArgs { x, y })| {
3737
let result = {
3838
let x = 1;
3939
};

proptest-macro/src/property_test/tests/snapshots/proptest_macro__property_test__tests__snapshot_tests__mix_custom_and_default_strategies.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fn foo() {
3333
::proptest::sugar::NamedArguments(stringify!(FooArgs), values)
3434
},
3535
),
36-
|::proptest::sugar::NamedArguments(_, FooArgs { x: x, y: y })| {
36+
|::proptest::sugar::NamedArguments(_, FooArgs { x, y })| {
3737
let result = {
3838
let x = 1;
3939
};

0 commit comments

Comments
 (0)