Skip to content

Commit 85f0290

Browse files
committed
Stabilize feature(macro_attributes_in_derive_output)
1 parent 92804cd commit 85f0290

7 files changed

+40
-142
lines changed

compiler/rustc_feature/src/accepted.rs

+2
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,8 @@ declare_features! (
295295
(accepted, const_fn_union, "1.56.0", Some(51909), None),
296296
/// Allows explicit discriminants on non-unit enum variants.
297297
(accepted, arbitrary_enum_discriminant, "1.56.0", Some(60553), None),
298+
/// Allows macro attributes to observe output of `#[derive]`.
299+
(accepted, macro_attributes_in_derive_output, "1.57.0", Some(81119), None),
298300

299301
// -------------------------------------------------------------------------
300302
// feature-group-end: accepted features

compiler/rustc_feature/src/active.rs

-3
Original file line numberDiff line numberDiff line change
@@ -592,9 +592,6 @@ declare_features! (
592592
/// Lessens the requirements for structs to implement `Unsize`.
593593
(active, relaxed_struct_unsize, "1.51.0", Some(81793), None),
594594

595-
/// Allows macro attributes to observe output of `#[derive]`.
596-
(active, macro_attributes_in_derive_output, "1.51.0", Some(81119), None),
597-
598595
/// Allows associated types in inherent impls.
599596
(incomplete, inherent_associated_types, "1.52.0", Some(8995), None),
600597

compiler/rustc_resolve/src/macros.rs

-32
Original file line numberDiff line numberDiff line change
@@ -311,38 +311,6 @@ impl<'a> ResolverExpand for Resolver<'a> {
311311
self.create_stable_hashing_context(),
312312
);
313313

314-
if let Res::Def(_, _) = res {
315-
// Gate macro attributes in `#[derive]` output.
316-
if !self.session.features_untracked().macro_attributes_in_derive_output
317-
&& kind == MacroKind::Attr
318-
&& ext.builtin_name != Some(sym::derive)
319-
{
320-
let mut expn_id = parent_scope.expansion;
321-
loop {
322-
// Helper attr table is a quick way to determine whether the attr is `derive`.
323-
if self.helper_attrs.contains_key(&expn_id) {
324-
feature_err(
325-
&self.session.parse_sess,
326-
sym::macro_attributes_in_derive_output,
327-
path.span,
328-
"macro attributes in `#[derive]` output are unstable",
329-
)
330-
.emit();
331-
break;
332-
} else {
333-
let expn_data = expn_id.expn_data();
334-
match expn_data.kind {
335-
ExpnKind::Root
336-
| ExpnKind::Macro(MacroKind::Bang | MacroKind::Derive, _) => {
337-
break;
338-
}
339-
_ => expn_id = expn_data.parent.expect_local(),
340-
}
341-
}
342-
}
343-
}
344-
}
345-
346314
Ok(ext)
347315
}
348316

src/test/ui/proc-macro/attribute-after-derive-feature-gate.rs

-37
This file was deleted.

src/test/ui/proc-macro/attribute-after-derive-feature-gate.stderr

-30
This file was deleted.

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

-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
// compile-flags: -Z span-debug
66
// aux-build: test-macros.rs
77

8-
#![feature(macro_attributes_in_derive_output)]
9-
108
#![no_std] // Don't load unnecessary hygiene information from std
119
extern crate std;
1210

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

+38-38
Original file line numberDiff line numberDiff line change
@@ -3,190 +3,190 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
33
Punct {
44
ch: '#',
55
spacing: Alone,
6-
span: $DIR/attribute-after-derive.rs:17:1: 17:2 (#0),
6+
span: $DIR/attribute-after-derive.rs:15:1: 15:2 (#0),
77
},
88
Group {
99
delimiter: Bracket,
1010
stream: TokenStream [
1111
Ident {
1212
ident: "derive",
13-
span: $DIR/attribute-after-derive.rs:17:3: 17:9 (#0),
13+
span: $DIR/attribute-after-derive.rs:15:3: 15:9 (#0),
1414
},
1515
Group {
1616
delimiter: Parenthesis,
1717
stream: TokenStream [
1818
Ident {
1919
ident: "Print",
20-
span: $DIR/attribute-after-derive.rs:17:10: 17:15 (#0),
20+
span: $DIR/attribute-after-derive.rs:15:10: 15:15 (#0),
2121
},
2222
],
23-
span: $DIR/attribute-after-derive.rs:17:9: 17:16 (#0),
23+
span: $DIR/attribute-after-derive.rs:15:9: 15:16 (#0),
2424
},
2525
],
26-
span: $DIR/attribute-after-derive.rs:17:2: 17:17 (#0),
26+
span: $DIR/attribute-after-derive.rs:15:2: 15:17 (#0),
2727
},
2828
Ident {
2929
ident: "struct",
30-
span: $DIR/attribute-after-derive.rs:18:1: 18:7 (#0),
30+
span: $DIR/attribute-after-derive.rs:16:1: 16:7 (#0),
3131
},
3232
Ident {
3333
ident: "AttributeDerive",
34-
span: $DIR/attribute-after-derive.rs:18:8: 18:23 (#0),
34+
span: $DIR/attribute-after-derive.rs:16:8: 16:23 (#0),
3535
},
3636
Group {
3737
delimiter: Brace,
3838
stream: TokenStream [
3939
Punct {
4040
ch: '#',
4141
spacing: Alone,
42-
span: $DIR/attribute-after-derive.rs:19:5: 19:6 (#0),
42+
span: $DIR/attribute-after-derive.rs:17:5: 17:6 (#0),
4343
},
4444
Group {
4545
delimiter: Bracket,
4646
stream: TokenStream [
4747
Ident {
4848
ident: "cfg",
49-
span: $DIR/attribute-after-derive.rs:19:7: 19:10 (#0),
49+
span: $DIR/attribute-after-derive.rs:17:7: 17:10 (#0),
5050
},
5151
Group {
5252
delimiter: Parenthesis,
5353
stream: TokenStream [
5454
Ident {
5555
ident: "FALSE",
56-
span: $DIR/attribute-after-derive.rs:19:11: 19:16 (#0),
56+
span: $DIR/attribute-after-derive.rs:17:11: 17:16 (#0),
5757
},
5858
],
59-
span: $DIR/attribute-after-derive.rs:19:10: 19:17 (#0),
59+
span: $DIR/attribute-after-derive.rs:17:10: 17:17 (#0),
6060
},
6161
],
62-
span: $DIR/attribute-after-derive.rs:19:6: 19:18 (#0),
62+
span: $DIR/attribute-after-derive.rs:17:6: 17:18 (#0),
6363
},
6464
Ident {
6565
ident: "field",
66-
span: $DIR/attribute-after-derive.rs:20:5: 20:10 (#0),
66+
span: $DIR/attribute-after-derive.rs:18:5: 18:10 (#0),
6767
},
6868
Punct {
6969
ch: ':',
7070
spacing: Alone,
71-
span: $DIR/attribute-after-derive.rs:20:10: 20:11 (#0),
71+
span: $DIR/attribute-after-derive.rs:18:10: 18:11 (#0),
7272
},
7373
Ident {
7474
ident: "u8",
75-
span: $DIR/attribute-after-derive.rs:20:12: 20:14 (#0),
75+
span: $DIR/attribute-after-derive.rs:18:12: 18:14 (#0),
7676
},
7777
Punct {
7878
ch: ',',
7979
spacing: Alone,
80-
span: $DIR/attribute-after-derive.rs:20:14: 20:15 (#0),
80+
span: $DIR/attribute-after-derive.rs:18:14: 18:15 (#0),
8181
},
8282
],
83-
span: $DIR/attribute-after-derive.rs:18:24: 21:2 (#0),
83+
span: $DIR/attribute-after-derive.rs:16:24: 19:2 (#0),
8484
},
8585
]
8686
PRINT-DERIVE INPUT (DISPLAY): struct AttributeDerive { }
8787
PRINT-DERIVE INPUT (DEBUG): TokenStream [
8888
Ident {
8989
ident: "struct",
90-
span: $DIR/attribute-after-derive.rs:18:1: 18:7 (#0),
90+
span: $DIR/attribute-after-derive.rs:16:1: 16:7 (#0),
9191
},
9292
Ident {
9393
ident: "AttributeDerive",
94-
span: $DIR/attribute-after-derive.rs:18:8: 18:23 (#0),
94+
span: $DIR/attribute-after-derive.rs:16:8: 16:23 (#0),
9595
},
9696
Group {
9797
delimiter: Brace,
9898
stream: TokenStream [],
99-
span: $DIR/attribute-after-derive.rs:18:24: 21:2 (#0),
99+
span: $DIR/attribute-after-derive.rs:16:24: 19:2 (#0),
100100
},
101101
]
102102
PRINT-DERIVE INPUT (DISPLAY): #[print_attr] struct DeriveAttribute { }
103103
PRINT-DERIVE INPUT (DEBUG): TokenStream [
104104
Punct {
105105
ch: '#',
106106
spacing: Alone,
107-
span: $DIR/attribute-after-derive.rs:24:1: 24:2 (#0),
107+
span: $DIR/attribute-after-derive.rs:22:1: 22:2 (#0),
108108
},
109109
Group {
110110
delimiter: Bracket,
111111
stream: TokenStream [
112112
Ident {
113113
ident: "print_attr",
114-
span: $DIR/attribute-after-derive.rs:24:3: 24:13 (#0),
114+
span: $DIR/attribute-after-derive.rs:22:3: 22:13 (#0),
115115
},
116116
],
117-
span: $DIR/attribute-after-derive.rs:24:2: 24:14 (#0),
117+
span: $DIR/attribute-after-derive.rs:22:2: 22:14 (#0),
118118
},
119119
Ident {
120120
ident: "struct",
121-
span: $DIR/attribute-after-derive.rs:25:1: 25:7 (#0),
121+
span: $DIR/attribute-after-derive.rs:23:1: 23:7 (#0),
122122
},
123123
Ident {
124124
ident: "DeriveAttribute",
125-
span: $DIR/attribute-after-derive.rs:25:8: 25:23 (#0),
125+
span: $DIR/attribute-after-derive.rs:23:8: 23:23 (#0),
126126
},
127127
Group {
128128
delimiter: Brace,
129129
stream: TokenStream [],
130-
span: $DIR/attribute-after-derive.rs:25:24: 28:2 (#0),
130+
span: $DIR/attribute-after-derive.rs:23:24: 26:2 (#0),
131131
},
132132
]
133133
PRINT-ATTR INPUT (DISPLAY): struct DeriveAttribute { #[cfg(FALSE)] field : u8, }
134134
PRINT-ATTR INPUT (DEBUG): TokenStream [
135135
Ident {
136136
ident: "struct",
137-
span: $DIR/attribute-after-derive.rs:25:1: 25:7 (#0),
137+
span: $DIR/attribute-after-derive.rs:23:1: 23:7 (#0),
138138
},
139139
Ident {
140140
ident: "DeriveAttribute",
141-
span: $DIR/attribute-after-derive.rs:25:8: 25:23 (#0),
141+
span: $DIR/attribute-after-derive.rs:23:8: 23:23 (#0),
142142
},
143143
Group {
144144
delimiter: Brace,
145145
stream: TokenStream [
146146
Punct {
147147
ch: '#',
148148
spacing: Alone,
149-
span: $DIR/attribute-after-derive.rs:26:5: 26:6 (#0),
149+
span: $DIR/attribute-after-derive.rs:24:5: 24:6 (#0),
150150
},
151151
Group {
152152
delimiter: Bracket,
153153
stream: TokenStream [
154154
Ident {
155155
ident: "cfg",
156-
span: $DIR/attribute-after-derive.rs:26:7: 26:10 (#0),
156+
span: $DIR/attribute-after-derive.rs:24:7: 24:10 (#0),
157157
},
158158
Group {
159159
delimiter: Parenthesis,
160160
stream: TokenStream [
161161
Ident {
162162
ident: "FALSE",
163-
span: $DIR/attribute-after-derive.rs:26:11: 26:16 (#0),
163+
span: $DIR/attribute-after-derive.rs:24:11: 24:16 (#0),
164164
},
165165
],
166-
span: $DIR/attribute-after-derive.rs:26:10: 26:17 (#0),
166+
span: $DIR/attribute-after-derive.rs:24:10: 24:17 (#0),
167167
},
168168
],
169-
span: $DIR/attribute-after-derive.rs:26:6: 26:18 (#0),
169+
span: $DIR/attribute-after-derive.rs:24:6: 24:18 (#0),
170170
},
171171
Ident {
172172
ident: "field",
173-
span: $DIR/attribute-after-derive.rs:27:5: 27:10 (#0),
173+
span: $DIR/attribute-after-derive.rs:25:5: 25:10 (#0),
174174
},
175175
Punct {
176176
ch: ':',
177177
spacing: Alone,
178-
span: $DIR/attribute-after-derive.rs:27:10: 27:11 (#0),
178+
span: $DIR/attribute-after-derive.rs:25:10: 25:11 (#0),
179179
},
180180
Ident {
181181
ident: "u8",
182-
span: $DIR/attribute-after-derive.rs:27:12: 27:14 (#0),
182+
span: $DIR/attribute-after-derive.rs:25:12: 25:14 (#0),
183183
},
184184
Punct {
185185
ch: ',',
186186
spacing: Alone,
187-
span: $DIR/attribute-after-derive.rs:27:14: 27:15 (#0),
187+
span: $DIR/attribute-after-derive.rs:25:14: 25:15 (#0),
188188
},
189189
],
190-
span: $DIR/attribute-after-derive.rs:25:24: 28:2 (#0),
190+
span: $DIR/attribute-after-derive.rs:23:24: 26:2 (#0),
191191
},
192192
]

0 commit comments

Comments
 (0)