@@ -616,11 +616,10 @@ pub fn fields(
616
616
// information in enumeratedValues;
617
617
// if it's not enumeratedValues, always derive the read proxy as we do not need to re-export
618
618
// it again from BitReader or FieldReader.
619
- let should_derive_reader = match lookup_filter ( & lookup_results, Usage :: Read ) {
620
- Some ( ( _evs, Some ( _base) ) ) => false ,
621
- Some ( ( _evs, None ) ) => true ,
622
- None => true ,
623
- } ;
619
+ let should_derive_reader = matches ! (
620
+ lookup_filter( & lookup_results, Usage :: Read ) ,
621
+ Some ( ( _, None ) ) | None
622
+ ) ;
624
623
625
624
// derive the read proxy structure if necessary.
626
625
if should_derive_reader {
@@ -932,11 +931,10 @@ pub fn fields(
932
931
933
932
// derive writer. We derive writer if the write proxy is in current register module,
934
933
// or writer in different register have different _SPEC structures
935
- let should_derive_writer = match lookup_filter ( & lookup_results, Usage :: Write ) {
936
- Some ( ( _evs, Some ( base) ) ) => base. register ( ) != fpath. register ( ) ,
937
- Some ( ( _evs, None ) ) => true ,
938
- None => true ,
939
- } ;
934
+ let should_derive_writer = matches ! (
935
+ lookup_filter( & lookup_results, Usage :: Write ) ,
936
+ Some ( ( _, None ) ) | None
937
+ ) ;
940
938
941
939
// derive writer structure by type alias to generic write proxy structure.
942
940
if should_derive_writer {
@@ -1006,6 +1004,22 @@ pub fn fields(
1006
1004
}
1007
1005
1008
1006
if let Some ( ( evs, Some ( base) ) ) = lookup_filter ( & lookup_results, Usage :: Write ) {
1007
+ // if base.register == None, derive write from the same module. This is allowed because both
1008
+ // the generated and source write proxy are in the same module.
1009
+ // we never reuse writer for writer in different module does not have the same _SPEC strcuture,
1010
+ // thus we cannot write to current register using re-exported write proxy.
1011
+
1012
+ // generate pub use field_1 writer as field_2 writer
1013
+ let base_field = util:: replace_suffix ( & base. field . name , "" ) ;
1014
+ let base_w = ( base_field + "_W" ) . to_constant_case_ident ( span) ;
1015
+ if !writer_derives. contains ( & writer_ty) {
1016
+ let base_path = base_syn_path ( base, & fpath, & base_w) ?;
1017
+ mod_items. extend ( quote ! {
1018
+ #[ doc = #field_writer_brief]
1019
+ pub use #base_path as #writer_ty;
1020
+ } ) ;
1021
+ writer_derives. insert ( writer_ty. clone ( ) ) ;
1022
+ }
1009
1023
// if base.register == None, it emits pub use structure from same module.
1010
1024
if base. register ( ) != fpath. register ( ) {
1011
1025
let writer_reader_different_enum = evs_r != Some ( evs) ;
@@ -1020,23 +1034,6 @@ pub fn fields(
1020
1034
writer_enum_derives. insert ( value_write_ty. clone ( ) ) ;
1021
1035
}
1022
1036
}
1023
- } else {
1024
- // if base.register == None, derive write from the same module. This is allowed because both
1025
- // the generated and source write proxy are in the same module.
1026
- // we never reuse writer for writer in different module does not have the same _SPEC strcuture,
1027
- // thus we cannot write to current register using re-exported write proxy.
1028
-
1029
- // generate pub use field_1 writer as field_2 writer
1030
- let base_field = util:: replace_suffix ( & base. field . name , "" ) ;
1031
- let base_w = ( base_field + "_W" ) . to_constant_case_ident ( span) ;
1032
- if !writer_derives. contains ( & writer_ty) {
1033
- let base_path = base_syn_path ( base, & fpath, & base_w) ?;
1034
- mod_items. extend ( quote ! {
1035
- #[ doc = #field_writer_brief]
1036
- pub use #base_path as #writer_ty;
1037
- } ) ;
1038
- writer_derives. insert ( writer_ty. clone ( ) ) ;
1039
- }
1040
1037
}
1041
1038
}
1042
1039
0 commit comments