@@ -8,37 +8,25 @@ use rustc_span::Span;
8
8
use syntax:: ast:: { self , AssocTyConstraint , AssocTyConstraintKind , NodeId } ;
9
9
use syntax:: ast:: { GenericParam , GenericParamKind , PatKind , RangeEnd , VariantData } ;
10
10
use syntax:: attr;
11
- use syntax:: sess:: { feature_err, leveled_feature_err , GateStrength , ParseSess } ;
11
+ use syntax:: sess:: { feature_err, feature_err_issue , ParseSess } ;
12
12
use syntax:: visit:: { self , FnKind , Visitor } ;
13
13
14
14
use log:: debug;
15
15
16
16
macro_rules! gate_feature_fn {
17
- ( $cx: expr, $has_feature: expr, $span: expr, $name: expr, $explain: expr, $level: expr) => { {
18
- let ( cx, has_feature, span, name, explain, level) =
19
- ( & * $cx, $has_feature, $span, $name, $explain, $level) ;
17
+ ( $cx: expr, $has_feature: expr, $span: expr, $name: expr, $explain: expr) => { {
18
+ let ( cx, has_feature, span, name, explain) = ( & * $cx, $has_feature, $span, $name, $explain) ;
20
19
let has_feature: bool = has_feature( & $cx. features) ;
21
20
debug!( "gate_feature(feature = {:?}, span = {:?}); has? {}" , name, span, has_feature) ;
22
21
if !has_feature && !span. allows_unstable( $name) {
23
- leveled_feature_err( cx. parse_sess, name, span, GateIssue :: Language , explain, level)
24
- . emit( ) ;
22
+ feature_err_issue( cx. parse_sess, name, span, GateIssue :: Language , explain) . emit( ) ;
25
23
}
26
24
} } ;
27
25
}
28
26
29
- macro_rules! gate_feature {
27
+ macro_rules! gate_feature_post {
30
28
( $cx: expr, $feature: ident, $span: expr, $explain: expr) => {
31
- gate_feature_fn!(
32
- $cx,
33
- |x: & Features | x. $feature,
34
- $span,
35
- sym:: $feature,
36
- $explain,
37
- GateStrength :: Hard
38
- )
39
- } ;
40
- ( $cx: expr, $feature: ident, $span: expr, $explain: expr, $level: expr) => {
41
- gate_feature_fn!( $cx, |x: & Features | x. $feature, $span, sym:: $feature, $explain, $level)
29
+ gate_feature_fn!( $cx, |x: & Features | x. $feature, $span, sym:: $feature, $explain)
42
30
} ;
43
31
}
44
32
@@ -51,21 +39,6 @@ struct PostExpansionVisitor<'a> {
51
39
features : & ' a Features ,
52
40
}
53
41
54
- macro_rules! gate_feature_post {
55
- ( $cx: expr, $feature: ident, $span: expr, $explain: expr) => { {
56
- let ( cx, span) = ( $cx, $span) ;
57
- if !span. allows_unstable( sym:: $feature) {
58
- gate_feature!( cx, $feature, span, $explain)
59
- }
60
- } } ;
61
- ( $cx: expr, $feature: ident, $span: expr, $explain: expr, $level: expr) => { {
62
- let ( cx, span) = ( $cx, $span) ;
63
- if !span. allows_unstable( sym:: $feature) {
64
- gate_feature!( cx, $feature, span, $explain, $level)
65
- }
66
- } } ;
67
- }
68
-
69
42
impl < ' a > PostExpansionVisitor < ' a > {
70
43
fn check_abi ( & self , abi : ast:: StrLit ) {
71
44
let ast:: StrLit { symbol_unescaped, span, .. } = abi;
@@ -257,15 +230,15 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
257
230
attr. ident ( ) . and_then ( |ident| BUILTIN_ATTRIBUTE_MAP . get ( & ident. name ) ) . map ( |a| * * a) ;
258
231
// Check feature gates for built-in attributes.
259
232
if let Some ( ( .., AttributeGate :: Gated ( _, name, descr, has_feature) ) ) = attr_info {
260
- gate_feature_fn ! ( self , has_feature, attr. span, name, descr, GateStrength :: Hard ) ;
233
+ gate_feature_fn ! ( self , has_feature, attr. span, name, descr) ;
261
234
}
262
235
// Check unstable flavors of the `#[doc]` attribute.
263
236
if attr. check_name ( sym:: doc) {
264
237
for nested_meta in attr. meta_item_list ( ) . unwrap_or_default ( ) {
265
238
macro_rules! gate_doc { ( $( $name: ident => $feature: ident) * ) => {
266
239
$( if nested_meta. check_name( sym:: $name) {
267
240
let msg = concat!( "`#[doc(" , stringify!( $name) , ")]` is experimental" ) ;
268
- gate_feature !( self , $feature, attr. span, msg) ;
241
+ gate_feature_post !( self , $feature, attr. span, msg) ;
269
242
} ) *
270
243
} }
271
244
@@ -666,7 +639,7 @@ pub fn check_crate(
666
639
macro_rules! gate_all {
667
640
( $gate: ident, $msg: literal) => {
668
641
for span in spans. get( & sym:: $gate) . unwrap_or( & vec![ ] ) {
669
- gate_feature !( & visitor, $gate, * span, $msg) ;
642
+ gate_feature_post !( & visitor, $gate, * span, $msg) ;
670
643
}
671
644
} ;
672
645
}
@@ -688,7 +661,7 @@ pub fn check_crate(
688
661
// disabling these uses of early feature-gatings.
689
662
if false {
690
663
for span in spans. get( & sym:: $gate) . unwrap_or( & vec![ ] ) {
691
- gate_feature !( & visitor, $gate, * span, $msg) ;
664
+ gate_feature_post !( & visitor, $gate, * span, $msg) ;
692
665
}
693
666
}
694
667
} ;
0 commit comments