pub const KNOWN_ATTRIBUTES: &'static [(&'static str, AttributeType, AttributeGate)] =
&[("warn", Normal, Ungated), ("allow", Normal, Ungated),
("forbid", Normal, Ungated), ("deny", Normal, Ungated),
("macro_reexport", Normal, Ungated), ("macro_use", Normal, Ungated),
("macro_export", Normal, Ungated), ("plugin_registrar", Normal, Ungated),
("cfg", Normal, Ungated), ("cfg_attr", Normal, Ungated),
("main", Normal, Ungated), ("start", Normal, Ungated),
("test", Normal, Ungated), ("bench", Normal, Ungated),
("simd", Normal, Ungated), ("repr", Normal, Ungated),
("path", Normal, Ungated), ("abi", Normal, Ungated),
("automatically_derived", Normal, Ungated), ("no_mangle", Normal, Ungated),
("no_link", Normal, Ungated), ("derive", Normal, Ungated),
("should_panic", Normal, Ungated), ("ignore", Normal, Ungated),
("no_implicit_prelude", Normal, Ungated),
("reexport_test_harness_main", Normal, Ungated),
("link_args", Normal, Ungated), ("macro_escape", Normal, Ungated),
("no_stack_check", Normal, Ungated),
("plugin", CrateLevel,
Gated("plugin", "compiler plugins are experimental and possibly buggy")),
("no_std", CrateLevel, Ungated),
("no_core", CrateLevel, Gated("no_core", "no_core is experimental")),
("lang", Normal,
Gated("lang_items", "language items are subject to change")),
("linkage", Whitelisted,
Gated("linkage",
"the `linkage` attribute is experimental and not portable across platforms")),
("thread_local", Whitelisted,
Gated("thread_local",
"`#[thread_local]` is an experimental feature, and does not currently handle destructors. There is no corresponding `#[task_local]` mapping to the task model")),
("rustc_on_unimplemented", Normal,
Gated("on_unimplemented",
"the `#[rustc_on_unimplemented]` attribute is an experimental feature")),
("allocator", Whitelisted,
Gated("allocator",
"the `#[allocator]` attribute is an experimental feature")),
("needs_allocator", Normal,
Gated("needs_allocator",
"the `#[needs_allocator]` attribute is an experimental feature")),
("rustc_variance", Normal,
Gated("rustc_attrs",
"the `#[rustc_variance]` attribute is just used for rustc unit tests and will never be stable")),
("rustc_error", Whitelisted,
Gated("rustc_attrs",
"the `#[rustc_error]` attribute is just used for rustc unit tests and will never be stable")),
("rustc_move_fragments", Normal,
Gated("rustc_attrs",
"the `#[rustc_move_fragments]` attribute is just used for rustc unit tests and will never be stable")),
("rustc_mir", Normal,
Gated("rustc_attrs",
"the `#[rustc_mir]` attribute is just used for rustc unit tests and will never be stable")),
("allow_internal_unstable", Normal,
Gated("allow_internal_unstable", EXPLAIN_ALLOW_INTERNAL_UNSTABLE)),
("fundamental", Whitelisted,
Gated("fundamental",
"the `#[fundamental]` attribute is an experimental feature")),
("linked_from", Normal,
Gated("linked_from",
"the `#[linked_from]` attribute is an experimental feature")),
("doc", Whitelisted, Ungated), ("cold", Whitelisted, Ungated),
("export_name", Whitelisted, Ungated), ("inline", Whitelisted, Ungated),
("link", Whitelisted, Ungated), ("link_name", Whitelisted, Ungated),
("link_section", Whitelisted, Ungated),
("no_builtins", Whitelisted, Ungated), ("no_mangle", Whitelisted, Ungated),
("no_debug", Whitelisted,
Gated("no_debug",
"the `#[no_debug]` attribute is an experimental feature")),
("omit_gdb_pretty_printer_section", Whitelisted,
Gated("omit_gdb_pretty_printer_section",
"the `#[omit_gdb_pretty_printer_section]` attribute is just used for the Rust test suite")),
("unsafe_no_drop_flag", Whitelisted,
Gated("unsafe_no_drop_flag",
"unsafe_no_drop_flag has unstable semantics and may be removed in the future")),
("unsafe_destructor_blind_to_params", Normal,
Gated("dropck_parametricity",
"unsafe_destructor_blind_to_params has unstable semantics and may be removed in the future")),
("unwind", Whitelisted,
Gated("unwind_attributes", "#[unwind] is experimental")),
("prelude_import", Whitelisted,
Gated("prelude_import", "`#[prelude_import]` is for use by rustc only")),
("rustc_deprecated", Whitelisted, Ungated),
("must_use", Whitelisted, Ungated), ("stable", Whitelisted, Ungated),
("unstable", Whitelisted, Ungated),
("rustc_paren_sugar", Normal,
Gated("unboxed_closures", "unboxed_closures are still evolving")),
("rustc_reflect_like", Whitelisted,
Gated("reflect", "defining reflective traits is still evolving")),
("crate_name", CrateLevel, Ungated), ("crate_type", CrateLevel, Ungated),
("crate_id", CrateLevel, Ungated), ("feature", CrateLevel, Ungated),
("no_start", CrateLevel, Ungated), ("no_main", CrateLevel, Ungated),
("no_builtins", CrateLevel, Ungated),
("recursion_limit", CrateLevel, Ungated)]