File tree Expand file tree Collapse file tree 1 file changed +28
-7
lines changed
Expand file tree Collapse file tree 1 file changed +28
-7
lines changed Original file line number Diff line number Diff line change 1515macro_rules! define_field {
1616 ( ) => {
1717 struct S { field: u8 }
18- }
18+ } ;
19+ ( $field: ident) => {
20+ struct Z { $field: u8 }
21+ } ;
1922}
2023
21- macro use_field( $define_field: item) {
22- $define_field
24+ mod modern {
25+ macro use_field( $define_field1: item, $define_field2: item) {
26+ $define_field1
27+ $define_field2
28+
29+ // OK, both struct name `S` and field `name` resolve to definitions
30+ // produced by `define_field` and living in the "root" context
31+ // that is in scope at `use_field`'s def-site.
32+ fn f ( ) { S { field : 0 } ; }
33+ fn g ( ) { Z { field : 0 } ; }
34+ }
2335
24- // OK, both struct name `S` and field `name` resolve to definitions produced by `define_field`
25- // and living in the "root" context that is in scope at `use_field`'s def-site.
26- fn f ( ) { S { field : 0 } ; }
36+ use_field ! ( define_field!{ } , define_field!{ field } ) ;
2737}
2838
29- use_field ! ( define_field!{ } ) ;
39+ mod legacy {
40+ macro_rules! use_field { ( $define_field1: item, $define_field2: item) => {
41+ $define_field1
42+ $define_field2
43+
44+ // OK, everything is at the same call-site.
45+ fn f( ) { S { field: 0 } ; }
46+ fn g( ) { Z { field: 0 } ; }
47+ } }
48+
49+ use_field ! ( define_field!{ } , define_field!{ field } ) ;
50+ }
3051
3152fn main ( ) { }
You can’t perform that action at this time.
0 commit comments