File tree Expand file tree Collapse file tree
bon-macros/src/builder/builder_gen Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -40,6 +40,7 @@ impl super::BuilderGenCtx {
4040 let ident = & receiver. field_ident ;
4141 let ty = & receiver. without_self_keyword ;
4242 quote ! {
43+ /// Value of `self` passed to the starting method, that created the builder
4344 #ident: #ty,
4445 }
4546 } ) ;
@@ -51,8 +52,18 @@ impl super::BuilderGenCtx {
5152
5253 let allows = super :: allow_warnings_on_member_types ( ) ;
5354
54- let start_fn_args_fields_idents = self . start_fn_args ( ) . map ( |member| & member. ident ) ;
55- let start_fn_args_fields_types = self . start_fn_args ( ) . map ( |member| & member. ty . norm ) ;
55+ let start_fn_args_fields = self . start_fn_args ( ) . map ( |member| {
56+ let ident = & member. ident ;
57+ let ty = & member. ty . norm ;
58+ let doc = format ! (
59+ "Value of `{ident}` passed as an argument to the starting function,
60+ that created the builder" ,
61+ ) ;
62+ quote ! {
63+ #[ doc = #doc]
64+ #ident: #ty
65+ }
66+ } ) ;
5667
5768 let named_members_types = self . named_members ( ) . map ( NamedMember :: underlying_norm_ty) ;
5869
@@ -96,7 +107,7 @@ impl super::BuilderGenCtx {
96107
97108 #receiver_field
98109
99- #( #start_fn_args_fields_idents : #start_fn_args_fields_types , ) *
110+ #( #start_fn_args_fields , ) *
100111
101112 #( #custom_fields_idents: #custom_fields_types, ) *
102113
Original file line number Diff line number Diff line change 1+ //! Tests that make sure `clippy::missing_docs_in_private_items` isn't triggered.
2+ //! This was created in response to [this issue](https://github.com/elastio/bon/issues/388).
3+ #![ warn( clippy:: missing_docs_in_private_items) ]
4+
5+ use bon:: { bon, builder, Builder } ;
6+
7+ /// Docs on `ExampleStruct`
8+ #[ derive( Builder ) ]
9+ struct ExampleStruct {
10+ /// Docs on `start_fn` member
11+ #[ builder( start_fn) ]
12+ start_fn : u32 ,
13+
14+ /// Docs on `finish_fn` member
15+ #[ builder( finish_fn) ]
16+ finish_fn : u32 ,
17+
18+ /// Docs on regular member
19+ regular : u32 ,
20+ }
21+
22+ #[ bon]
23+ impl ExampleStruct {
24+ #[ builder]
25+ const fn selfless_fn (
26+ /// Docs on `start_fn` member
27+ #[ builder( start_fn) ]
28+ start_fn : u32 ,
29+
30+ /// Docs on `finish_fn` member
31+ #[ builder( finish_fn) ]
32+ finish_fn : u32 ,
33+
34+ /// Docs on regular member
35+ regular : u32 ,
36+ ) {
37+ let _ = start_fn;
38+ let _ = finish_fn;
39+ let _ = regular;
40+ }
41+
42+ #[ builder]
43+ const fn selfful_fn (
44+ & self ,
45+
46+ /// Docs on `start_fn` member
47+ #[ builder( start_fn) ]
48+ start_fn : u32 ,
49+
50+ /// Docs on `finish_fn` member
51+ #[ builder( finish_fn) ]
52+ finish_fn : u32 ,
53+
54+ /// Docs on regular member
55+ regular : u32 ,
56+ ) {
57+ let _ = self ;
58+ let _ = start_fn;
59+ let _ = finish_fn;
60+ let _ = regular;
61+ }
62+ }
63+
64+ /// Docs on `example` function
65+ #[ builder]
66+ const fn example_function (
67+ /// Docs on `start_fn` member
68+ #[ builder( start_fn) ]
69+ start_fn : u32 ,
70+
71+ /// Docs on `finish_fn` member
72+ #[ builder( finish_fn) ]
73+ finish_fn : u32 ,
74+
75+ /// Docs on regular member
76+ regular : u32 ,
77+ ) {
78+ let _ = start_fn;
79+ let _ = finish_fn;
80+ let _ = regular;
81+ }
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ pub mod overrides;
1313pub mod private_builder;
1414pub mod state_mod;
1515
16+ mod docs_in_private_items;
1617mod reexports;
1718
1819pub use reexports:: { UnexportedBuilder , UnexportedStateMod , UnexportedStateModBuilder } ;
You can’t perform that action at this time.
0 commit comments