Skip to content

Commit ef001ae

Browse files
committed
Extend tests
1 parent 28a8452 commit ef001ae

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

src/test/ui/hygiene/call-site-parent-vs-expansion-parent.rs

+28-7
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,38 @@
1515
macro_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

3152
fn main() {}

0 commit comments

Comments
 (0)