Skip to content

Commit c993984

Browse files
committed
builtin_macros: Make #[derive(A, B, ...)] cfg-eval its input only for A, B, ...
1 parent f06f9bb commit c993984

File tree

2 files changed

+48
-4
lines changed

2 files changed

+48
-4
lines changed

compiler/rustc_builtin_macros/src/derive.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ impl MultiItemModifier for Expander {
2626
return ExpandResult::Ready(vec![item]);
2727
}
2828

29-
let item = cfg_eval(ecx, item);
29+
let configured_item = cfg_eval(ecx, item.clone());
3030

3131
let result =
3232
ecx.resolver.resolve_derives(ecx.current_expansion.id, ecx.force_mode, &|| {
@@ -56,7 +56,7 @@ impl MultiItemModifier for Expander {
5656
report_path_args(sess, &meta);
5757
meta.path
5858
})
59-
.map(|path| (path, item.clone(), None))
59+
.map(|path| (path, configured_item.clone(), None))
6060
.collect()
6161
});
6262

src/test/ui/proc-macro/attribute-after-derive.stdout

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ PRINT-DERIVE INPUT (DEBUG): TokenStream [
130130
span: $DIR/attribute-after-derive.rs:25:24: 28:2 (#0),
131131
},
132132
]
133-
PRINT-ATTR INPUT (DISPLAY): struct DeriveAttribute { }
133+
PRINT-ATTR INPUT (DISPLAY): struct DeriveAttribute { #[cfg(FALSE)] field : u8, }
134134
PRINT-ATTR INPUT (DEBUG): TokenStream [
135135
Ident {
136136
ident: "struct",
@@ -142,7 +142,51 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
142142
},
143143
Group {
144144
delimiter: Brace,
145-
stream: TokenStream [],
145+
stream: TokenStream [
146+
Punct {
147+
ch: '#',
148+
spacing: Alone,
149+
span: $DIR/attribute-after-derive.rs:26:5: 26:6 (#0),
150+
},
151+
Group {
152+
delimiter: Bracket,
153+
stream: TokenStream [
154+
Ident {
155+
ident: "cfg",
156+
span: $DIR/attribute-after-derive.rs:26:7: 26:10 (#0),
157+
},
158+
Group {
159+
delimiter: Parenthesis,
160+
stream: TokenStream [
161+
Ident {
162+
ident: "FALSE",
163+
span: $DIR/attribute-after-derive.rs:26:11: 26:16 (#0),
164+
},
165+
],
166+
span: $DIR/attribute-after-derive.rs:26:10: 26:17 (#0),
167+
},
168+
],
169+
span: $DIR/attribute-after-derive.rs:26:6: 26:18 (#0),
170+
},
171+
Ident {
172+
ident: "field",
173+
span: $DIR/attribute-after-derive.rs:27:5: 27:10 (#0),
174+
},
175+
Punct {
176+
ch: ':',
177+
spacing: Alone,
178+
span: $DIR/attribute-after-derive.rs:27:10: 27:11 (#0),
179+
},
180+
Ident {
181+
ident: "u8",
182+
span: $DIR/attribute-after-derive.rs:27:12: 27:14 (#0),
183+
},
184+
Punct {
185+
ch: ',',
186+
spacing: Alone,
187+
span: $DIR/attribute-after-derive.rs:27:14: 27:15 (#0),
188+
},
189+
],
146190
span: $DIR/attribute-after-derive.rs:25:24: 28:2 (#0),
147191
},
148192
]

0 commit comments

Comments
 (0)