@@ -377,17 +377,28 @@ pub enum AttributeGate {
377377 Ungated ,
378378}
379379
380- #[ derive( Copy , Clone , PartialEq , Eq ) ]
380+ impl AttributeGate {
381+ fn is_deprecated ( & self ) -> bool {
382+ match * self {
383+ Gated ( Stability :: Deprecated ( _) , ..) => true ,
384+ _ => false ,
385+ }
386+ }
387+ }
388+
389+ #[ derive( Copy , Clone , PartialEq , Eq , Debug ) ]
381390pub enum Stability {
382391 Unstable ,
383- Deprecated ,
392+ // Argument is tracking issue link.
393+ Deprecated ( & ' static str ) ,
384394}
385395
386396// fn() is not Debug
387397impl :: std:: fmt:: Debug for AttributeGate {
388398 fn fmt ( & self , fmt : & mut :: std:: fmt:: Formatter ) -> :: std:: fmt:: Result {
389399 match * self {
390- Gated ( _, ref name, ref expl, _) => write ! ( fmt, "Gated({}, {})" , name, expl) ,
400+ Gated ( ref stab, ref name, ref expl, _) =>
401+ write ! ( fmt, "Gated({:?}, {}, {})" , stab, name, expl) ,
391402 Ungated => write ! ( fmt, "Ungated" )
392403 }
393404 }
@@ -402,6 +413,10 @@ macro_rules! cfg_fn {
402413 } }
403414}
404415
416+ pub fn deprecated_attributes ( ) -> Vec < & ' static ( & ' static str , AttributeType , AttributeGate ) > {
417+ KNOWN_ATTRIBUTES . iter ( ) . filter ( |a| a. 2 . is_deprecated ( ) ) . collect ( )
418+ }
419+
405420// Attributes that have a special meaning to rustc or rustdoc
406421pub const KNOWN_ATTRIBUTES : & ' static [ ( & ' static str , AttributeType , AttributeGate ) ] = & [
407422 // Normal attributes
@@ -643,11 +658,11 @@ pub const KNOWN_ATTRIBUTES: &'static [(&'static str, AttributeType, AttributeGat
643658 ( "link_section" , Whitelisted , Ungated ) ,
644659 ( "no_builtins" , Whitelisted , Ungated ) ,
645660 ( "no_mangle" , Whitelisted , Ungated ) ,
646- ( "no_debug" , Whitelisted , Gated ( Stability :: Deprecated ,
647- "no_debug" ,
648- "the `#[ no_debug]` attribute \
649- is an experimental feature",
650- cfg_fn ! ( no_debug) ) ) ,
661+ ( "no_debug" , Whitelisted , Gated (
662+ Stability :: Deprecated ( "https://github.com/rust-lang/rust/issues/29721" ) ,
663+ " no_debug" ,
664+ "the `#[no_debug]` attribute is an experimental feature",
665+ cfg_fn ! ( no_debug) ) ) ,
651666 ( "omit_gdb_pretty_printer_section" , Whitelisted , Gated ( Stability :: Unstable ,
652667 "omit_gdb_pretty_printer_section" ,
653668 "the `#[omit_gdb_pretty_printer_section]` \
0 commit comments