@@ -7,9 +7,7 @@ use rustc_ast::{
7
7
NestedMetaItem , Safety ,
8
8
} ;
9
9
use rustc_errors:: { Applicability , FatalError , PResult } ;
10
- use rustc_feature:: {
11
- AttributeSafety , AttributeTemplate , BuiltinAttribute , Features , BUILTIN_ATTRIBUTE_MAP ,
12
- } ;
10
+ use rustc_feature:: { AttributeSafety , AttributeTemplate , BuiltinAttribute , BUILTIN_ATTRIBUTE_MAP } ;
13
11
use rustc_session:: errors:: report_lit_error;
14
12
use rustc_session:: lint:: builtin:: { ILL_FORMED_ATTRIBUTE_INPUT , UNSAFE_ATTR_OUTSIDE_UNSAFE } ;
15
13
use rustc_session:: lint:: BuiltinLintDiag ;
@@ -18,7 +16,7 @@ use rustc_span::{sym, BytePos, Span, Symbol};
18
16
19
17
use crate :: { errors, parse_in} ;
20
18
21
- pub fn check_attr ( features : & Features , psess : & ParseSess , attr : & Attribute ) {
19
+ pub fn check_attr ( psess : & ParseSess , attr : & Attribute ) {
22
20
if attr. is_doc_comment ( ) {
23
21
return ;
24
22
}
@@ -28,17 +26,17 @@ pub fn check_attr(features: &Features, psess: &ParseSess, attr: &Attribute) {
28
26
29
27
// All non-builtin attributes are considered safe
30
28
let safety = attr_info. map ( |x| x. safety ) . unwrap_or ( AttributeSafety :: Normal ) ;
31
- check_attribute_safety ( features , psess, safety, attr) ;
29
+ check_attribute_safety ( psess, safety, attr) ;
32
30
33
31
// Check input tokens for built-in and key-value attributes.
34
32
match attr_info {
35
33
// `rustc_dummy` doesn't have any restrictions specific to built-in attributes.
36
34
Some ( BuiltinAttribute { name, template, .. } ) if * name != sym:: rustc_dummy => {
37
35
match parse_meta ( psess, attr) {
38
36
// Don't check safety again, we just did that
39
- Ok ( meta) => check_builtin_meta_item (
40
- features , psess, & meta, attr. style , * name, * template, false ,
41
- ) ,
37
+ Ok ( meta) => {
38
+ check_builtin_meta_item ( psess, & meta, attr. style , * name, * template, false )
39
+ }
42
40
Err ( err) => {
43
41
err. emit ( ) ;
44
42
}
@@ -157,16 +155,7 @@ fn is_attr_template_compatible(template: &AttributeTemplate, meta: &ast::MetaIte
157
155
}
158
156
}
159
157
160
- pub fn check_attribute_safety (
161
- features : & Features ,
162
- psess : & ParseSess ,
163
- safety : AttributeSafety ,
164
- attr : & Attribute ,
165
- ) {
166
- if !features. unsafe_attributes {
167
- return ;
168
- }
169
-
158
+ pub fn check_attribute_safety ( psess : & ParseSess , safety : AttributeSafety , attr : & Attribute ) {
170
159
let attr_item = attr. get_normal_item ( ) ;
171
160
172
161
if safety == AttributeSafety :: Unsafe {
@@ -215,21 +204,18 @@ pub fn check_attribute_safety(
215
204
216
205
// Called by `check_builtin_meta_item` and code that manually denies
217
206
// `unsafe(...)` in `cfg`
218
- pub fn deny_builtin_meta_unsafety ( features : & Features , psess : & ParseSess , meta : & MetaItem ) {
207
+ pub fn deny_builtin_meta_unsafety ( psess : & ParseSess , meta : & MetaItem ) {
219
208
// This only supports denying unsafety right now - making builtin attributes
220
209
// support unsafety will requite us to thread the actual `Attribute` through
221
210
// for the nice diagnostics.
222
- if features. unsafe_attributes {
223
- if let Safety :: Unsafe ( unsafe_span) = meta. unsafety {
224
- psess
225
- . dcx ( )
226
- . emit_err ( errors:: InvalidAttrUnsafe { span : unsafe_span, name : meta. path . clone ( ) } ) ;
227
- }
211
+ if let Safety :: Unsafe ( unsafe_span) = meta. unsafety {
212
+ psess
213
+ . dcx ( )
214
+ . emit_err ( errors:: InvalidAttrUnsafe { span : unsafe_span, name : meta. path . clone ( ) } ) ;
228
215
}
229
216
}
230
217
231
218
pub fn check_builtin_meta_item (
232
- features : & Features ,
233
219
psess : & ParseSess ,
234
220
meta : & MetaItem ,
235
221
style : ast:: AttrStyle ,
@@ -246,7 +232,7 @@ pub fn check_builtin_meta_item(
246
232
}
247
233
248
234
if deny_unsafety {
249
- deny_builtin_meta_unsafety ( features , psess, meta) ;
235
+ deny_builtin_meta_unsafety ( psess, meta) ;
250
236
}
251
237
}
252
238
0 commit comments