rustc_attr_parsing/context.rs
1//! Context given to attribute parsers when parsing.
2use std::cell::RefCell;
3use std::collections::BTreeMap;
4use std::collections::btree_map::Entry;
5use std::mem;
6use std::ops::{Deref, DerefMut};
7use std::sync::LazyLock;
8#[cfg(debug_assertions)]
9use std::sync::atomic::{AtomicBool, Ordering};
10
11use rustc_ast::{AttrStyle, MetaItemLit, Safety};
12use rustc_attr_ir::target::Target;
13use rustc_attr_ir::{AttrPath, Attribute, AttributeKind};
14use rustc_data_structures::sync::{DynSend, DynSync};
15use rustc_errors::{Diag, DiagCtxtHandle, Diagnostic, Level, MultiSpan};
16use rustc_feature::AttributeStability;
17use rustc_lint_defs::builtin::UNUSED_ATTRIBUTES;
18use rustc_lint_defs::{Lint, LintId};
19use rustc_parse::parser::Recovery;
20use rustc_session::Session;
21use rustc_span::{ErrorGuaranteed, Ident, Span, Symbol};
22
23// Glob imports to avoid big, bitrotty import lists
24use crate::attributes::allow_unstable::*;
25use crate::attributes::autodiff::*;
26use crate::attributes::body::*;
27use crate::attributes::cfi_encoding::*;
28use crate::attributes::codegen_attrs::*;
29use crate::attributes::confusables::*;
30use crate::attributes::crate_level::*;
31use crate::attributes::debugger::*;
32use crate::attributes::deprecation::*;
33use crate::attributes::diagnostic::do_not_recommend::*;
34use crate::attributes::diagnostic::on_const::*;
35use crate::attributes::diagnostic::on_move::*;
36use crate::attributes::diagnostic::on_type_error::*;
37use crate::attributes::diagnostic::on_unimplemented::*;
38use crate::attributes::diagnostic::on_unknown::*;
39use crate::attributes::diagnostic::on_unmatched_args::*;
40use crate::attributes::diagnostic::opaque::*;
41use crate::attributes::doc::*;
42use crate::attributes::dummy::*;
43use crate::attributes::inline::*;
44use crate::attributes::instruction_set::*;
45use crate::attributes::link_attrs::*;
46use crate::attributes::lint_helpers::*;
47use crate::attributes::loop_match::*;
48use crate::attributes::macro_attrs::*;
49use crate::attributes::must_not_suspend::*;
50use crate::attributes::must_use::*;
51use crate::attributes::no_implicit_prelude::*;
52use crate::attributes::no_link::*;
53use crate::attributes::non_exhaustive::*;
54use crate::attributes::path::PathParser as PathAttributeParser;
55use crate::attributes::pin_v2::*;
56use crate::attributes::proc_macro_attrs::*;
57use crate::attributes::prototype::*;
58use crate::attributes::repr::*;
59use crate::attributes::rustc_allocator::*;
60use crate::attributes::rustc_dump::*;
61use crate::attributes::rustc_internal::*;
62use crate::attributes::semantics::{ComptimeParser, *};
63use crate::attributes::splat::*;
64use crate::attributes::stability::*;
65use crate::attributes::test_attrs::*;
66use crate::attributes::traits::*;
67use crate::attributes::transparency::*;
68use crate::attributes::unroll::*;
69use crate::attributes::{AttributeParser as _, AttributeSafety, Combine, Single, WithoutArgs};
70use crate::diagnostics::{
71 AttributeParseError, AttributeParseErrorReason, AttributeParseErrorSuggestions,
72 ParsedDescription, UnusedDuplicate,
73};
74use crate::parser::{
75 ArgParser, MetaItemListParser, MetaItemOrLitParser, MetaItemParser, NameValueParser,
76 RefPathParser,
77};
78use crate::target_checking::AllowedTargets;
79use crate::{AttributeParser, AttributeTemplate, EmitAttribute};
80
81type GroupType = LazyLock<GroupTypeInner>;
82
83pub(super) struct GroupTypeInner {
84 pub(super) accepters: BTreeMap<&'static [Symbol], GroupTypeInnerAccept>,
85}
86
87pub(super) struct GroupTypeInnerAccept {
88 pub(super) template: AttributeTemplate,
89 pub(super) accept_fn: AcceptFn,
90 pub(super) allowed_targets: AllowedTargets<'static>,
91 pub(super) safety: AttributeSafety,
92 pub(super) stability: AttributeStability,
93 pub(super) finalizer: FinalizeFn,
94}
95
96pub(crate) type AcceptFn =
97 Box<dyn for<'sess> Fn(&mut AcceptContext<'_, 'sess>, &ArgParser) + Send + Sync>;
98
99pub(crate) type FinalizeFn = fn(&mut FinalizeContext<'_, '_>) -> FinalizeOutput;
100
101/// A cross-attribute check that runs *after* all attributes on an item have been
102/// finalized, so it can inspect the fully parsed attributes via
103/// [`FinalizeCheckContext::parsed_attrs`]. The [`Span`] is the span of the attribute the
104/// check is associated with, used for diagnostics.
105pub(crate) type FinalizeCheckFn = fn(&FinalizeCheckContext<'_, '_>, Span);
106
107/// The result of finalizing a single attribute parser.
108pub(crate) struct FinalizeOutput {
109 /// The attribute the parser produced, if any.
110 pub(crate) attr: Option<AttributeKind>,
111 /// A check to run once *all* attributes on the item have been finalized, together
112 /// with the span it should be reported at. Deferred so that it can inspect the fully
113 /// parsed attributes via [`FinalizeCheckContext::parsed_attrs`].
114 pub(crate) deferred_check: Option<(FinalizeCheckFn, Span)>,
115}
116
117macro_rules! attribute_parsers {
118 (
119 pub(crate) static $name: ident = [$($names: ty),* $(,)?];
120 ) => {
121 pub(crate) static $name: GroupType = LazyLock::new(|| {
122 let mut accepters = BTreeMap::<_, GroupTypeInnerAccept>::new();
123 $(
124 {
125 thread_local! {
126 static STATE_OBJECT: RefCell<$names> = RefCell::new(<$names>::default());
127 };
128
129 for (path, template, stability, accept_fn) in <$names>::ATTRIBUTES {
130 match accepters.entry(*path) {
131 Entry::Vacant(e) => {
132 e.insert(GroupTypeInnerAccept {
133 template: *template,
134 accept_fn: Box::new(|cx, args| {
135 STATE_OBJECT.with_borrow_mut(|s| {
136 accept_fn(s, cx, args)
137 })
138 }),
139 safety: <$names as crate::attributes::AttributeParser>::SAFETY,
140 stability: *stability,
141 allowed_targets: <$names as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
142 finalizer: |cx| {
143 let state = STATE_OBJECT.take();
144 // Compute the deferred check (if any) before consuming
145 // the state in `finalize`.
146 let deferred_check = state.deferred_finalize_check();
147 let attr = state.finalize(cx);
148 FinalizeOutput { attr, deferred_check }
149 }
150 });
151 }
152 Entry::Occupied(_) => panic!("Attribute {path:?} has multiple accepters"),
153 }
154 }
155 }
156 )*
157
158 GroupTypeInner { accepters }
159 });
160 };
161}
162pub(crate) static ATTRIBUTE_PARSERS: GroupType =
LazyLock::new(||
{
let mut accepters =
BTreeMap::<_, GroupTypeInnerAccept>::new();
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<BodyStabilityParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<BodyStabilityParser> {
RefCell::new(<BodyStabilityParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<BodyStabilityParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<BodyStabilityParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<BodyStabilityParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<BodyStabilityParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <BodyStabilityParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <BodyStabilityParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<ConfusablesParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<ConfusablesParser> {
RefCell::new(<ConfusablesParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<ConfusablesParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<ConfusablesParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<ConfusablesParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<ConfusablesParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <ConfusablesParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <ConfusablesParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<ConstStabilityParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<ConstStabilityParser> {
RefCell::new(<ConstStabilityParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<ConstStabilityParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<ConstStabilityParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<ConstStabilityParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<ConstStabilityParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <ConstStabilityParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <ConstStabilityParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<DocParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<DocParser> {
RefCell::new(<DocParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<DocParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<DocParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<DocParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<DocParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <DocParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <DocParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<MacroUseParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<MacroUseParser> {
RefCell::new(<MacroUseParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<MacroUseParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<MacroUseParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<MacroUseParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<MacroUseParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <MacroUseParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <MacroUseParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<NakedParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<NakedParser> {
RefCell::new(<NakedParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<NakedParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<NakedParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<NakedParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<NakedParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <NakedParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <NakedParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnConstParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<OnConstParser> {
RefCell::new(<OnConstParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnConstParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnConstParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnConstParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnConstParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnConstParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnConstParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnMoveParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<OnMoveParser> {
RefCell::new(<OnMoveParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnMoveParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnMoveParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnMoveParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnMoveParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnMoveParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnMoveParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnTypeErrorParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<OnTypeErrorParser> {
RefCell::new(<OnTypeErrorParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnTypeErrorParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnTypeErrorParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnTypeErrorParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnTypeErrorParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnTypeErrorParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnTypeErrorParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnUnimplementedParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<OnUnimplementedParser> {
RefCell::new(<OnUnimplementedParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnUnimplementedParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnimplementedParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnimplementedParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnUnimplementedParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnUnimplementedParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnUnimplementedParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnUnknownParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<OnUnknownParser> {
RefCell::new(<OnUnknownParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnUnknownParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnknownParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnknownParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnUnknownParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnUnknownParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnUnknownParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnUnmatchedArgsParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<OnUnmatchedArgsParser> {
RefCell::new(<OnUnmatchedArgsParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnUnmatchedArgsParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnmatchedArgsParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnmatchedArgsParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnUnmatchedArgsParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnUnmatchedArgsParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnUnmatchedArgsParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OpaqueParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<OpaqueParser> {
RefCell::new(<OpaqueParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OpaqueParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OpaqueParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OpaqueParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OpaqueParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OpaqueParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OpaqueParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<RegisterToolParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<RegisterToolParser> {
RefCell::new(<RegisterToolParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<RegisterToolParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RegisterToolParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RegisterToolParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<RegisterToolParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <RegisterToolParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <RegisterToolParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<RustcAlignParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<RustcAlignParser> {
RefCell::new(<RustcAlignParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<RustcAlignParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcAlignParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcAlignParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<RustcAlignParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <RustcAlignParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <RustcAlignParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<RustcAlignStaticParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<RustcAlignStaticParser> {
RefCell::new(<RustcAlignStaticParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<RustcAlignStaticParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcAlignStaticParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcAlignStaticParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<RustcAlignStaticParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <RustcAlignStaticParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <RustcAlignStaticParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<RustcCguTestAttributeParser>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<RustcCguTestAttributeParser> {
RefCell::new(<RustcCguTestAttributeParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<RustcCguTestAttributeParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcCguTestAttributeParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcCguTestAttributeParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<RustcCguTestAttributeParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <RustcCguTestAttributeParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <RustcCguTestAttributeParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<StabilityParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<StabilityParser> {
RefCell::new(<StabilityParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<StabilityParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<StabilityParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<StabilityParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<StabilityParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <StabilityParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <StabilityParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<UsedParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<UsedParser> {
RefCell::new(<UsedParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<UsedParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<UsedParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<UsedParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<UsedParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <UsedParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <UsedParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<AllowInternalUnstableParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<AllowInternalUnstableParser>> {
RefCell::new(<Combine<AllowInternalUnstableParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<AllowInternalUnstableParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<AllowInternalUnstableParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<AllowInternalUnstableParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<AllowInternalUnstableParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<AllowInternalUnstableParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<AllowInternalUnstableParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<CrateTypeParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<CrateTypeParser>> {
RefCell::new(<Combine<CrateTypeParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<CrateTypeParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<CrateTypeParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<CrateTypeParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<CrateTypeParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<CrateTypeParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<CrateTypeParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<DebuggerVisualizerParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<DebuggerVisualizerParser>> {
RefCell::new(<Combine<DebuggerVisualizerParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<DebuggerVisualizerParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<DebuggerVisualizerParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<DebuggerVisualizerParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<DebuggerVisualizerParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<DebuggerVisualizerParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<DebuggerVisualizerParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<FeatureParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<FeatureParser>> {
RefCell::new(<Combine<FeatureParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<FeatureParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<FeatureParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<FeatureParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<FeatureParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<FeatureParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<FeatureParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<ForceTargetFeatureParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<ForceTargetFeatureParser>> {
RefCell::new(<Combine<ForceTargetFeatureParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<ForceTargetFeatureParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<ForceTargetFeatureParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<ForceTargetFeatureParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<ForceTargetFeatureParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<ForceTargetFeatureParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<ForceTargetFeatureParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<LinkParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<LinkParser>> {
RefCell::new(<Combine<LinkParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<LinkParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<LinkParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<LinkParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<LinkParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<LinkParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<LinkParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<ReprParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<ReprParser>> {
RefCell::new(<Combine<ReprParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<ReprParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<ReprParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<ReprParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<ReprParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<ReprParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<ReprParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<RustcAllowConstFnUnstableParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<RustcAllowConstFnUnstableParser>> {
RefCell::new(<Combine<RustcAllowConstFnUnstableParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<RustcAllowConstFnUnstableParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcAllowConstFnUnstableParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcAllowConstFnUnstableParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<RustcAllowConstFnUnstableParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<RustcAllowConstFnUnstableParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<RustcAllowConstFnUnstableParser>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<RustcCleanParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<RustcCleanParser>> {
RefCell::new(<Combine<RustcCleanParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<RustcCleanParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcCleanParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcCleanParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<RustcCleanParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<RustcCleanParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<RustcCleanParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<RustcDumpLayoutParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<RustcDumpLayoutParser>> {
RefCell::new(<Combine<RustcDumpLayoutParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<RustcDumpLayoutParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcDumpLayoutParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcDumpLayoutParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<RustcDumpLayoutParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<RustcDumpLayoutParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<RustcDumpLayoutParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<RustcMirParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<RustcMirParser>> {
RefCell::new(<Combine<RustcMirParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<RustcMirParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcMirParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcMirParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<RustcMirParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<RustcMirParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<RustcMirParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<RustcThenThisWouldNeedParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<RustcThenThisWouldNeedParser>> {
RefCell::new(<Combine<RustcThenThisWouldNeedParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<RustcThenThisWouldNeedParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcThenThisWouldNeedParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcThenThisWouldNeedParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<RustcThenThisWouldNeedParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<RustcThenThisWouldNeedParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<RustcThenThisWouldNeedParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<TargetFeatureParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<TargetFeatureParser>> {
RefCell::new(<Combine<TargetFeatureParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<TargetFeatureParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<TargetFeatureParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<TargetFeatureParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<TargetFeatureParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<TargetFeatureParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<TargetFeatureParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<UnstableFeatureBoundParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<UnstableFeatureBoundParser>> {
RefCell::new(<Combine<UnstableFeatureBoundParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<UnstableFeatureBoundParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<UnstableFeatureBoundParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<UnstableFeatureBoundParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<UnstableFeatureBoundParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<UnstableFeatureBoundParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<UnstableFeatureBoundParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<UnstableRemovedParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<UnstableRemovedParser>> {
RefCell::new(<Combine<UnstableRemovedParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<UnstableRemovedParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<UnstableRemovedParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<UnstableRemovedParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<UnstableRemovedParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<UnstableRemovedParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<UnstableRemovedParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<CfiEncodingParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<CfiEncodingParser>> {
RefCell::new(<Single<CfiEncodingParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<CfiEncodingParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CfiEncodingParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CfiEncodingParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<CfiEncodingParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<CfiEncodingParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<CfiEncodingParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<CollapseDebugInfoParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<CollapseDebugInfoParser>> {
RefCell::new(<Single<CollapseDebugInfoParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<CollapseDebugInfoParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CollapseDebugInfoParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CollapseDebugInfoParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<CollapseDebugInfoParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<CollapseDebugInfoParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<CollapseDebugInfoParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<CoverageParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<CoverageParser>> {
RefCell::new(<Single<CoverageParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<CoverageParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CoverageParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CoverageParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<CoverageParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<CoverageParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<CoverageParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<CrateNameParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<CrateNameParser>> {
RefCell::new(<Single<CrateNameParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<CrateNameParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CrateNameParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CrateNameParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<CrateNameParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<CrateNameParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<CrateNameParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<CustomMirParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<CustomMirParser>> {
RefCell::new(<Single<CustomMirParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<CustomMirParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CustomMirParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CustomMirParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<CustomMirParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<CustomMirParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<CustomMirParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<DeprecatedParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<DeprecatedParser>> {
RefCell::new(<Single<DeprecatedParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<DeprecatedParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<DeprecatedParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<DeprecatedParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<DeprecatedParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<DeprecatedParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<DeprecatedParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<DoNotRecommendParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<DoNotRecommendParser>> {
RefCell::new(<Single<DoNotRecommendParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<DoNotRecommendParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<DoNotRecommendParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<DoNotRecommendParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<DoNotRecommendParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<DoNotRecommendParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<DoNotRecommendParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<ExportNameParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<ExportNameParser>> {
RefCell::new(<Single<ExportNameParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<ExportNameParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ExportNameParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ExportNameParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<ExportNameParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<ExportNameParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<ExportNameParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<IgnoreParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<IgnoreParser>> {
RefCell::new(<Single<IgnoreParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<IgnoreParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<IgnoreParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<IgnoreParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<IgnoreParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<IgnoreParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<IgnoreParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<InlineParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<InlineParser>> {
RefCell::new(<Single<InlineParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<InlineParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InlineParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InlineParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<InlineParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<InlineParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<InlineParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<InstructionSetParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<InstructionSetParser>> {
RefCell::new(<Single<InstructionSetParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<InstructionSetParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InstructionSetParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InstructionSetParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<InstructionSetParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<InstructionSetParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<InstructionSetParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<InstrumentFnParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<InstrumentFnParser>> {
RefCell::new(<Single<InstrumentFnParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<InstrumentFnParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InstrumentFnParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InstrumentFnParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<InstrumentFnParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<InstrumentFnParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<InstrumentFnParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<LangParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<LangParser>> {
RefCell::new(<Single<LangParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<LangParser>>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LangParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LangParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<LangParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<LangParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<LangParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<LinkNameParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<LinkNameParser>> {
RefCell::new(<Single<LinkNameParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<LinkNameParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkNameParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkNameParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<LinkNameParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<LinkNameParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<LinkNameParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<LinkOrdinalParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<LinkOrdinalParser>> {
RefCell::new(<Single<LinkOrdinalParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<LinkOrdinalParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkOrdinalParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkOrdinalParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<LinkOrdinalParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<LinkOrdinalParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<LinkOrdinalParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<LinkSectionParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<LinkSectionParser>> {
RefCell::new(<Single<LinkSectionParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<LinkSectionParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkSectionParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkSectionParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<LinkSectionParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<LinkSectionParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<LinkSectionParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<LinkageParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<LinkageParser>> {
RefCell::new(<Single<LinkageParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<LinkageParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkageParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkageParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<LinkageParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<LinkageParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<LinkageParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<MacroExportParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<MacroExportParser>> {
RefCell::new(<Single<MacroExportParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<MacroExportParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MacroExportParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MacroExportParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<MacroExportParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<MacroExportParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<MacroExportParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<MoveSizeLimitParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<MoveSizeLimitParser>> {
RefCell::new(<Single<MoveSizeLimitParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<MoveSizeLimitParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MoveSizeLimitParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MoveSizeLimitParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<MoveSizeLimitParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<MoveSizeLimitParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<MoveSizeLimitParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<MustNotSuspendParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<MustNotSuspendParser>> {
RefCell::new(<Single<MustNotSuspendParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<MustNotSuspendParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MustNotSuspendParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MustNotSuspendParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<MustNotSuspendParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<MustNotSuspendParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<MustNotSuspendParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<MustUseParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<MustUseParser>> {
RefCell::new(<Single<MustUseParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<MustUseParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MustUseParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MustUseParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<MustUseParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<MustUseParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<MustUseParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<OptimizeParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<OptimizeParser>> {
RefCell::new(<Single<OptimizeParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<OptimizeParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<OptimizeParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<OptimizeParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<OptimizeParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<OptimizeParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<OptimizeParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<PatchableFunctionEntryParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<PatchableFunctionEntryParser>> {
RefCell::new(<Single<PatchableFunctionEntryParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<PatchableFunctionEntryParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PatchableFunctionEntryParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PatchableFunctionEntryParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<PatchableFunctionEntryParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<PatchableFunctionEntryParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<PatchableFunctionEntryParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<PathAttributeParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<PathAttributeParser>> {
RefCell::new(<Single<PathAttributeParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<PathAttributeParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PathAttributeParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PathAttributeParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<PathAttributeParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<PathAttributeParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<PathAttributeParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<PatternComplexityLimitParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<PatternComplexityLimitParser>> {
RefCell::new(<Single<PatternComplexityLimitParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<PatternComplexityLimitParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PatternComplexityLimitParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PatternComplexityLimitParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<PatternComplexityLimitParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<PatternComplexityLimitParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<PatternComplexityLimitParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<ProcMacroDeriveParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<ProcMacroDeriveParser>> {
RefCell::new(<Single<ProcMacroDeriveParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<ProcMacroDeriveParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ProcMacroDeriveParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ProcMacroDeriveParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<ProcMacroDeriveParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<ProcMacroDeriveParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<ProcMacroDeriveParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RecursionLimitParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RecursionLimitParser>> {
RefCell::new(<Single<RecursionLimitParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RecursionLimitParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RecursionLimitParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RecursionLimitParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RecursionLimitParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RecursionLimitParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RecursionLimitParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<ReexportTestHarnessMainParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<ReexportTestHarnessMainParser>> {
RefCell::new(<Single<ReexportTestHarnessMainParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<ReexportTestHarnessMainParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ReexportTestHarnessMainParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ReexportTestHarnessMainParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<ReexportTestHarnessMainParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<ReexportTestHarnessMainParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<ReexportTestHarnessMainParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcAbiParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcAbiParser>> {
RefCell::new(<Single<RustcAbiParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcAbiParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAbiParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAbiParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcAbiParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcAbiParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcAbiParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcAllocatorZeroedVariantParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcAllocatorZeroedVariantParser>> {
RefCell::new(<Single<RustcAllocatorZeroedVariantParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcAllocatorZeroedVariantParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAllocatorZeroedVariantParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAllocatorZeroedVariantParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcAllocatorZeroedVariantParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcAllocatorZeroedVariantParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcAllocatorZeroedVariantParser>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcAutodiffParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcAutodiffParser>> {
RefCell::new(<Single<RustcAutodiffParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcAutodiffParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAutodiffParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAutodiffParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcAutodiffParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcAutodiffParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcAutodiffParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcBuiltinMacroParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcBuiltinMacroParser>> {
RefCell::new(<Single<RustcBuiltinMacroParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcBuiltinMacroParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcBuiltinMacroParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcBuiltinMacroParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcBuiltinMacroParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcBuiltinMacroParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcBuiltinMacroParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDeprecatedSafe2024Parser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDeprecatedSafe2024Parser>> {
RefCell::new(<Single<RustcDeprecatedSafe2024Parser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDeprecatedSafe2024Parser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDeprecatedSafe2024Parser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDeprecatedSafe2024Parser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDeprecatedSafe2024Parser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDeprecatedSafe2024Parser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDeprecatedSafe2024Parser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDiagnosticItemParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDiagnosticItemParser>> {
RefCell::new(<Single<RustcDiagnosticItemParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDiagnosticItemParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDiagnosticItemParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDiagnosticItemParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDiagnosticItemParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDiagnosticItemParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDiagnosticItemParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDocPrimitiveParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDocPrimitiveParser>> {
RefCell::new(<Single<RustcDocPrimitiveParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDocPrimitiveParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDocPrimitiveParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDocPrimitiveParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDocPrimitiveParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDocPrimitiveParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDocPrimitiveParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDummyParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDummyParser>> {
RefCell::new(<Single<RustcDummyParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDummyParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDummyParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDummyParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDummyParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDummyParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDummyParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDumpDefPathParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDumpDefPathParser>> {
RefCell::new(<Single<RustcDumpDefPathParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDumpDefPathParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDumpDefPathParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDumpDefPathParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDumpDefPathParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDumpDefPathParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDumpDefPathParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDumpSymbolNameParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDumpSymbolNameParser>> {
RefCell::new(<Single<RustcDumpSymbolNameParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDumpSymbolNameParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDumpSymbolNameParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDumpSymbolNameParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDumpSymbolNameParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDumpSymbolNameParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDumpSymbolNameParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcForceInlineParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcForceInlineParser>> {
RefCell::new(<Single<RustcForceInlineParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcForceInlineParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcForceInlineParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcForceInlineParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcForceInlineParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcForceInlineParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcForceInlineParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcIfThisChangedParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcIfThisChangedParser>> {
RefCell::new(<Single<RustcIfThisChangedParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcIfThisChangedParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcIfThisChangedParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcIfThisChangedParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcIfThisChangedParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcIfThisChangedParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcIfThisChangedParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcLegacyConstGenericsParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcLegacyConstGenericsParser>> {
RefCell::new(<Single<RustcLegacyConstGenericsParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcLegacyConstGenericsParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcLegacyConstGenericsParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcLegacyConstGenericsParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcLegacyConstGenericsParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcLegacyConstGenericsParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcLegacyConstGenericsParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcLintOptDenyFieldAccessParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcLintOptDenyFieldAccessParser>> {
RefCell::new(<Single<RustcLintOptDenyFieldAccessParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcLintOptDenyFieldAccessParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcLintOptDenyFieldAccessParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcLintOptDenyFieldAccessParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcLintOptDenyFieldAccessParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcLintOptDenyFieldAccessParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcLintOptDenyFieldAccessParser>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcMacroTransparencyParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcMacroTransparencyParser>> {
RefCell::new(<Single<RustcMacroTransparencyParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcMacroTransparencyParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcMacroTransparencyParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcMacroTransparencyParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcMacroTransparencyParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcMacroTransparencyParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcMacroTransparencyParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcMustImplementOneOfParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcMustImplementOneOfParser>> {
RefCell::new(<Single<RustcMustImplementOneOfParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcMustImplementOneOfParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcMustImplementOneOfParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcMustImplementOneOfParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcMustImplementOneOfParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcMustImplementOneOfParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcMustImplementOneOfParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcObjcClassParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcObjcClassParser>> {
RefCell::new(<Single<RustcObjcClassParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcObjcClassParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcObjcClassParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcObjcClassParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcObjcClassParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcObjcClassParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcObjcClassParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcObjcSelectorParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcObjcSelectorParser>> {
RefCell::new(<Single<RustcObjcSelectorParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcObjcSelectorParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcObjcSelectorParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcObjcSelectorParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcObjcSelectorParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcObjcSelectorParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcObjcSelectorParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcScalableVectorParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcScalableVectorParser>> {
RefCell::new(<Single<RustcScalableVectorParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcScalableVectorParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcScalableVectorParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcScalableVectorParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcScalableVectorParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcScalableVectorParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcScalableVectorParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcSimdMonomorphizeLaneLimitParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcSimdMonomorphizeLaneLimitParser>> {
RefCell::new(<Single<RustcSimdMonomorphizeLaneLimitParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcSimdMonomorphizeLaneLimitParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcSimdMonomorphizeLaneLimitParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcSimdMonomorphizeLaneLimitParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcSimdMonomorphizeLaneLimitParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcSimdMonomorphizeLaneLimitParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcSimdMonomorphizeLaneLimitParser>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcSkipDuringMethodDispatchParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcSkipDuringMethodDispatchParser>> {
RefCell::new(<Single<RustcSkipDuringMethodDispatchParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcSkipDuringMethodDispatchParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcSkipDuringMethodDispatchParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcSkipDuringMethodDispatchParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcSkipDuringMethodDispatchParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcSkipDuringMethodDispatchParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcSkipDuringMethodDispatchParser>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcTestMarkerParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcTestMarkerParser>> {
RefCell::new(<Single<RustcTestMarkerParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcTestMarkerParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcTestMarkerParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcTestMarkerParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcTestMarkerParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcTestMarkerParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcTestMarkerParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<SanitizeParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<SanitizeParser>> {
RefCell::new(<Single<SanitizeParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<SanitizeParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<SanitizeParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<SanitizeParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<SanitizeParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<SanitizeParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<SanitizeParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<ShouldPanicParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<ShouldPanicParser>> {
RefCell::new(<Single<ShouldPanicParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<ShouldPanicParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ShouldPanicParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ShouldPanicParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<ShouldPanicParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<ShouldPanicParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<ShouldPanicParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<TestRunnerParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<TestRunnerParser>> {
RefCell::new(<Single<TestRunnerParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<TestRunnerParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<TestRunnerParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<TestRunnerParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<TestRunnerParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<TestRunnerParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<TestRunnerParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<TypeLengthLimitParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<TypeLengthLimitParser>> {
RefCell::new(<Single<TypeLengthLimitParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<TypeLengthLimitParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<TypeLengthLimitParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<TypeLengthLimitParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<TypeLengthLimitParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<TypeLengthLimitParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<TypeLengthLimitParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<UnrollParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<UnrollParser>> {
RefCell::new(<Single<UnrollParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<UnrollParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<UnrollParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<UnrollParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<UnrollParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<UnrollParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<UnrollParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WindowsSubsystemParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WindowsSubsystemParser>> {
RefCell::new(<Single<WindowsSubsystemParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WindowsSubsystemParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WindowsSubsystemParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WindowsSubsystemParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WindowsSubsystemParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WindowsSubsystemParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WindowsSubsystemParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<AllowInternalUnsafeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<AllowInternalUnsafeParser>>> {
RefCell::new(<Single<WithoutArgs<AllowInternalUnsafeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<AllowInternalUnsafeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<AllowInternalUnsafeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<AllowInternalUnsafeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<AllowInternalUnsafeParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<AllowInternalUnsafeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<AllowInternalUnsafeParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<AlwaysGcaParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<AlwaysGcaParser>>> {
RefCell::new(<Single<WithoutArgs<AlwaysGcaParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<AlwaysGcaParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<AlwaysGcaParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<AlwaysGcaParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<AlwaysGcaParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<AlwaysGcaParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<AlwaysGcaParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<AutomaticallyDerivedParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<AutomaticallyDerivedParser>>> {
RefCell::new(<Single<WithoutArgs<AutomaticallyDerivedParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<AutomaticallyDerivedParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<AutomaticallyDerivedParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<AutomaticallyDerivedParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<AutomaticallyDerivedParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<AutomaticallyDerivedParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<AutomaticallyDerivedParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ColdParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ColdParser>>> {
RefCell::new(<Single<WithoutArgs<ColdParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ColdParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ColdParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ColdParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ColdParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ColdParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ColdParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<CompilerBuiltinsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<CompilerBuiltinsParser>>> {
RefCell::new(<Single<WithoutArgs<CompilerBuiltinsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<CompilerBuiltinsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<CompilerBuiltinsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<CompilerBuiltinsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<CompilerBuiltinsParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<CompilerBuiltinsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<CompilerBuiltinsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ComptimeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ComptimeParser>>> {
RefCell::new(<Single<WithoutArgs<ComptimeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ComptimeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ComptimeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ComptimeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ComptimeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ComptimeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ComptimeParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ConstContinueParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ConstContinueParser>>> {
RefCell::new(<Single<WithoutArgs<ConstContinueParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ConstContinueParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ConstContinueParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ConstContinueParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ConstContinueParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ConstContinueParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ConstContinueParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<CoroutineParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<CoroutineParser>>> {
RefCell::new(<Single<WithoutArgs<CoroutineParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<CoroutineParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<CoroutineParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<CoroutineParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<CoroutineParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<CoroutineParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<CoroutineParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<DefaultLibAllocatorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<DefaultLibAllocatorParser>>> {
RefCell::new(<Single<WithoutArgs<DefaultLibAllocatorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<DefaultLibAllocatorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<DefaultLibAllocatorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<DefaultLibAllocatorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<DefaultLibAllocatorParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<DefaultLibAllocatorParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<DefaultLibAllocatorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ExportStableParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ExportStableParser>>> {
RefCell::new(<Single<WithoutArgs<ExportStableParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ExportStableParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ExportStableParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ExportStableParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ExportStableParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ExportStableParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ExportStableParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<FfiConstParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<FfiConstParser>>> {
RefCell::new(<Single<WithoutArgs<FfiConstParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<FfiConstParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FfiConstParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FfiConstParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<FfiConstParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<FfiConstParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<FfiConstParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<FfiPureParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<FfiPureParser>>> {
RefCell::new(<Single<WithoutArgs<FfiPureParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<FfiPureParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FfiPureParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FfiPureParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<FfiPureParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<FfiPureParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<FfiPureParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<FundamentalParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<FundamentalParser>>> {
RefCell::new(<Single<WithoutArgs<FundamentalParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<FundamentalParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FundamentalParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FundamentalParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<FundamentalParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<FundamentalParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<FundamentalParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<LoopMatchParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<LoopMatchParser>>> {
RefCell::new(<Single<WithoutArgs<LoopMatchParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<LoopMatchParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<LoopMatchParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<LoopMatchParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<LoopMatchParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<LoopMatchParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<LoopMatchParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<MacroEscapeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<MacroEscapeParser>>> {
RefCell::new(<Single<WithoutArgs<MacroEscapeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<MacroEscapeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MacroEscapeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MacroEscapeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<MacroEscapeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<MacroEscapeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<MacroEscapeParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<MarkerParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<MarkerParser>>> {
RefCell::new(<Single<WithoutArgs<MarkerParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<MarkerParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MarkerParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MarkerParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<MarkerParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<MarkerParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<MarkerParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<MayDangleParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<MayDangleParser>>> {
RefCell::new(<Single<WithoutArgs<MayDangleParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<MayDangleParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MayDangleParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MayDangleParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<MayDangleParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<MayDangleParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<MayDangleParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NeedsAllocatorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NeedsAllocatorParser>>> {
RefCell::new(<Single<WithoutArgs<NeedsAllocatorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NeedsAllocatorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NeedsAllocatorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NeedsAllocatorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NeedsAllocatorParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NeedsAllocatorParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NeedsAllocatorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NeedsPanicRuntimeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NeedsPanicRuntimeParser>>> {
RefCell::new(<Single<WithoutArgs<NeedsPanicRuntimeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NeedsPanicRuntimeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NeedsPanicRuntimeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NeedsPanicRuntimeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NeedsPanicRuntimeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NeedsPanicRuntimeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NeedsPanicRuntimeParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoBuiltinsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoBuiltinsParser>>> {
RefCell::new(<Single<WithoutArgs<NoBuiltinsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoBuiltinsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoBuiltinsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoBuiltinsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoBuiltinsParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoBuiltinsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoBuiltinsParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoCoreParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoCoreParser>>> {
RefCell::new(<Single<WithoutArgs<NoCoreParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoCoreParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoCoreParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoCoreParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoCoreParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoCoreParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoCoreParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoImplicitPreludeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoImplicitPreludeParser>>> {
RefCell::new(<Single<WithoutArgs<NoImplicitPreludeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoImplicitPreludeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoImplicitPreludeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoImplicitPreludeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoImplicitPreludeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoImplicitPreludeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoImplicitPreludeParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoLinkParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoLinkParser>>> {
RefCell::new(<Single<WithoutArgs<NoLinkParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoLinkParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoLinkParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoLinkParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoLinkParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoLinkParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoLinkParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoMainParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoMainParser>>> {
RefCell::new(<Single<WithoutArgs<NoMainParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoMainParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoMainParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoMainParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoMainParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoMainParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoMainParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoMangleParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoMangleParser>>> {
RefCell::new(<Single<WithoutArgs<NoMangleParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoMangleParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoMangleParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoMangleParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoMangleParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoMangleParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoMangleParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoStdParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoStdParser>>> {
RefCell::new(<Single<WithoutArgs<NoStdParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoStdParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoStdParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoStdParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoStdParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoStdParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoStdParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NonExhaustiveParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NonExhaustiveParser>>> {
RefCell::new(<Single<WithoutArgs<NonExhaustiveParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NonExhaustiveParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NonExhaustiveParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NonExhaustiveParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NonExhaustiveParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NonExhaustiveParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NonExhaustiveParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<PanicHandlerParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<PanicHandlerParser>>> {
RefCell::new(<Single<WithoutArgs<PanicHandlerParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<PanicHandlerParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PanicHandlerParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PanicHandlerParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<PanicHandlerParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<PanicHandlerParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<PanicHandlerParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<PanicRuntimeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<PanicRuntimeParser>>> {
RefCell::new(<Single<WithoutArgs<PanicRuntimeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<PanicRuntimeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PanicRuntimeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PanicRuntimeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<PanicRuntimeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<PanicRuntimeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<PanicRuntimeParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<PinV2Parser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<PinV2Parser>>> {
RefCell::new(<Single<WithoutArgs<PinV2Parser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<PinV2Parser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PinV2Parser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PinV2Parser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<PinV2Parser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<PinV2Parser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<PinV2Parser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<PreludeImportParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<PreludeImportParser>>> {
RefCell::new(<Single<WithoutArgs<PreludeImportParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<PreludeImportParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PreludeImportParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PreludeImportParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<PreludeImportParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<PreludeImportParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<PreludeImportParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ProcMacroAttributeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ProcMacroAttributeParser>>> {
RefCell::new(<Single<WithoutArgs<ProcMacroAttributeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ProcMacroAttributeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProcMacroAttributeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProcMacroAttributeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ProcMacroAttributeParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ProcMacroAttributeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ProcMacroAttributeParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ProcMacroParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ProcMacroParser>>> {
RefCell::new(<Single<WithoutArgs<ProcMacroParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ProcMacroParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProcMacroParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProcMacroParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ProcMacroParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ProcMacroParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ProcMacroParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ProfilerRuntimeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ProfilerRuntimeParser>>> {
RefCell::new(<Single<WithoutArgs<ProfilerRuntimeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ProfilerRuntimeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProfilerRuntimeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProfilerRuntimeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ProfilerRuntimeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ProfilerRuntimeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ProfilerRuntimeParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcAllocatorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcAllocatorParser>>> {
RefCell::new(<Single<WithoutArgs<RustcAllocatorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcAllocatorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllocatorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllocatorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcAllocatorParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcAllocatorParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcAllocatorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcAllocatorZeroedParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcAllocatorZeroedParser>>> {
RefCell::new(<Single<WithoutArgs<RustcAllocatorZeroedParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcAllocatorZeroedParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllocatorZeroedParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllocatorZeroedParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcAllocatorZeroedParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcAllocatorZeroedParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcAllocatorZeroedParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcAllowIncoherentImplParser>>> {
RefCell::new(<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcAllowIncoherentImplParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcAllowIncoherentImplParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>> {
RefCell::new(<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcAsPtrParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcAsPtrParser>>> {
RefCell::new(<Single<WithoutArgs<RustcAsPtrParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcAsPtrParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAsPtrParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAsPtrParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcAsPtrParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcAsPtrParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcAsPtrParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcCanonicalSymbolParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcCanonicalSymbolParser>>> {
RefCell::new(<Single<WithoutArgs<RustcCanonicalSymbolParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcCanonicalSymbolParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCanonicalSymbolParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCanonicalSymbolParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcCanonicalSymbolParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcCanonicalSymbolParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcCanonicalSymbolParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcCaptureAnalysisParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcCaptureAnalysisParser>>> {
RefCell::new(<Single<WithoutArgs<RustcCaptureAnalysisParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcCaptureAnalysisParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCaptureAnalysisParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCaptureAnalysisParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcCaptureAnalysisParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcCaptureAnalysisParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcCaptureAnalysisParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcCoherenceIsCoreParser>>> {
RefCell::new(<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcCoherenceIsCoreParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcCoherenceIsCoreParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcCoinductiveParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcCoinductiveParser>>> {
RefCell::new(<Single<WithoutArgs<RustcCoinductiveParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcCoinductiveParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCoinductiveParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCoinductiveParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcCoinductiveParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcCoinductiveParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcCoinductiveParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcConstStableIndirectParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcConstStableIndirectParser>>> {
RefCell::new(<Single<WithoutArgs<RustcConstStableIndirectParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcConstStableIndirectParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcConstStableIndirectParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcConstStableIndirectParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcConstStableIndirectParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcConstStableIndirectParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcConstStableIndirectParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcConversionSuggestionParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcConversionSuggestionParser>>> {
RefCell::new(<Single<WithoutArgs<RustcConversionSuggestionParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcConversionSuggestionParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcConversionSuggestionParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcConversionSuggestionParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcConversionSuggestionParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcConversionSuggestionParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcConversionSuggestionParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDeallocatorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDeallocatorParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDeallocatorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDeallocatorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDeallocatorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDeallocatorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDeallocatorParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDeallocatorParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDeallocatorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDenyExplicitImplParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDenyExplicitImplParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDenyExplicitImplParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDenyExplicitImplParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDenyExplicitImplParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDenyExplicitImplParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDenyExplicitImplParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDenyExplicitImplParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDenyExplicitImplParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDoNotConstCheckParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDoNotConstCheckParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDoNotConstCheckParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDoNotConstCheckParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDoNotConstCheckParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDoNotConstCheckParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDoNotConstCheckParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDoNotConstCheckParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDoNotConstCheckParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpClausesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpClausesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpClausesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpClausesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpClausesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpClausesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpClausesParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpClausesParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpClausesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpDefParentsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpDefParentsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpDefParentsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpDefParentsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpDefParentsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpDefParentsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpDefParentsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpDefParentsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpDefParentsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpGenericsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpGenericsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpGenericsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpGenericsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpGenericsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpGenericsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpGenericsParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpGenericsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpGenericsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpInferredOutlivesParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpInferredOutlivesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpItemBoundsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpItemBoundsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpItemBoundsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpItemBoundsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpItemBoundsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpItemBoundsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpItemBoundsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpItemBoundsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpItemBoundsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpUserArgsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpUserArgsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpUserArgsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpUserArgsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpUserArgsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpUserArgsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpUserArgsParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpUserArgsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpUserArgsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpVariancesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpVariancesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpVariancesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpVariancesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVariancesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVariancesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpVariancesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpVariancesParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpVariancesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpVtableParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpVtableParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpVtableParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpVtableParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVtableParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVtableParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpVtableParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpVtableParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpVtableParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDynIncompatibleTraitParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDynIncompatibleTraitParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcEffectiveVisibilityParser>>> {
RefCell::new(<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcEffectiveVisibilityParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcEffectiveVisibilityParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcEiiForeignItemParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcEiiForeignItemParser>>> {
RefCell::new(<Single<WithoutArgs<RustcEiiForeignItemParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcEiiForeignItemParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEiiForeignItemParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEiiForeignItemParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcEiiForeignItemParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcEiiForeignItemParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcEiiForeignItemParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcEvaluateWhereClausesParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcEvaluateWhereClausesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcExhaustiveParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcExhaustiveParser>>> {
RefCell::new(<Single<WithoutArgs<RustcExhaustiveParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcExhaustiveParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcExhaustiveParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcExhaustiveParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcExhaustiveParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcExhaustiveParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcExhaustiveParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcInheritOverflowChecksParser>>> {
RefCell::new(<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcInheritOverflowChecksParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcInheritOverflowChecksParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcInsignificantDtorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcInsignificantDtorParser>>> {
RefCell::new(<Single<WithoutArgs<RustcInsignificantDtorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcInsignificantDtorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcInsignificantDtorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcInsignificantDtorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcInsignificantDtorParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcInsignificantDtorParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcInsignificantDtorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>> {
RefCell::new(<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcIntrinsicParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcIntrinsicParser>>> {
RefCell::new(<Single<WithoutArgs<RustcIntrinsicParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcIntrinsicParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcIntrinsicParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcIntrinsicParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcIntrinsicParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcIntrinsicParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcIntrinsicParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcLintOptTyParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcLintOptTyParser>>> {
RefCell::new(<Single<WithoutArgs<RustcLintOptTyParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcLintOptTyParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintOptTyParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintOptTyParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcLintOptTyParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcLintOptTyParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcLintOptTyParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcLintQueryInstabilityParser>>> {
RefCell::new(<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcLintQueryInstabilityParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcLintQueryInstabilityParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>> {
RefCell::new(<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcMainParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcMainParser>>> {
RefCell::new(<Single<WithoutArgs<RustcMainParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcMainParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcMainParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcMainParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcMainParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcMainParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcMainParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNoImplicitAutorefsParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNoImplicitAutorefsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcNoImplicitBoundsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNoImplicitBoundsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNoImplicitBoundsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNoMirInlineParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcNoMirInlineParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNoMirInlineParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNoMirInlineParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoMirInlineParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoMirInlineParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNoMirInlineParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNoMirInlineParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNoMirInlineParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNoWritableParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcNoWritableParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNoWritableParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNoWritableParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoWritableParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoWritableParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNoWritableParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNoWritableParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNoWritableParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcNonConstTraitMethodParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNonConstTraitMethodParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNonConstTraitMethodParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNounwindParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcNounwindParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNounwindParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNounwindParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNounwindParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNounwindParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNounwindParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNounwindParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNounwindParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcOffloadKernelParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcOffloadKernelParser>>> {
RefCell::new(<Single<WithoutArgs<RustcOffloadKernelParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcOffloadKernelParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcOffloadKernelParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcOffloadKernelParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcOffloadKernelParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcOffloadKernelParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcOffloadKernelParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcPanicsWhenZeroParser>>> {
RefCell::new(<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcPanicsWhenZeroParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcPanicsWhenZeroParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcParenSugarParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcParenSugarParser>>> {
RefCell::new(<Single<WithoutArgs<RustcParenSugarParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcParenSugarParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcParenSugarParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcParenSugarParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcParenSugarParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcParenSugarParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcParenSugarParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcPassByValueParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcPassByValueParser>>> {
RefCell::new(<Single<WithoutArgs<RustcPassByValueParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcPassByValueParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPassByValueParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPassByValueParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcPassByValueParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcPassByValueParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcPassByValueParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>> {
RefCell::new(<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcPreserveUbChecksParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcPreserveUbChecksParser>>> {
RefCell::new(<Single<WithoutArgs<RustcPreserveUbChecksParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcPreserveUbChecksParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPreserveUbChecksParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPreserveUbChecksParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcPreserveUbChecksParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcPreserveUbChecksParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcPreserveUbChecksParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcProcMacroDeclsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcProcMacroDeclsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcProcMacroDeclsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcProcMacroDeclsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcProcMacroDeclsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcProcMacroDeclsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcProcMacroDeclsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcProcMacroDeclsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcProcMacroDeclsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcPubTransparentParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcPubTransparentParser>>> {
RefCell::new(<Single<WithoutArgs<RustcPubTransparentParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcPubTransparentParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPubTransparentParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPubTransparentParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcPubTransparentParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcPubTransparentParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcPubTransparentParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcReallocatorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcReallocatorParser>>> {
RefCell::new(<Single<WithoutArgs<RustcReallocatorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcReallocatorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcReallocatorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcReallocatorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcReallocatorParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcReallocatorParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcReallocatorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcRegionsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcRegionsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcRegionsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcRegionsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcRegionsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcRegionsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcRegionsParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcRegionsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcRegionsParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcSpecializationTraitParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcSpecializationTraitParser>>> {
RefCell::new(<Single<WithoutArgs<RustcSpecializationTraitParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcSpecializationTraitParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcSpecializationTraitParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcSpecializationTraitParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcSpecializationTraitParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcSpecializationTraitParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcSpecializationTraitParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcStdInternalSymbolParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcStdInternalSymbolParser>>> {
RefCell::new(<Single<WithoutArgs<RustcStdInternalSymbolParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcStdInternalSymbolParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcStdInternalSymbolParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcStdInternalSymbolParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcStdInternalSymbolParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcStdInternalSymbolParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcStdInternalSymbolParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcStrictCoherenceParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcStrictCoherenceParser>>> {
RefCell::new(<Single<WithoutArgs<RustcStrictCoherenceParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcStrictCoherenceParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcStrictCoherenceParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcStrictCoherenceParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcStrictCoherenceParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcStrictCoherenceParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcStrictCoherenceParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcTrivialFieldReadsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcTrivialFieldReadsParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcTrivialFieldReadsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<SplatParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<SplatParser>>> {
RefCell::new(<Single<WithoutArgs<SplatParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<SplatParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<SplatParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<SplatParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<SplatParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<SplatParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<SplatParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ThreadLocalParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ThreadLocalParser>>> {
RefCell::new(<Single<WithoutArgs<ThreadLocalParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ThreadLocalParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ThreadLocalParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ThreadLocalParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ThreadLocalParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ThreadLocalParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ThreadLocalParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<TrackCallerParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<TrackCallerParser>>> {
RefCell::new(<Single<WithoutArgs<TrackCallerParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<TrackCallerParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<TrackCallerParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<TrackCallerParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<TrackCallerParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<TrackCallerParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<TrackCallerParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
GroupTypeInner { accepters }
});attribute_parsers!(
163 pub(crate) static ATTRIBUTE_PARSERS = [
164 // tidy-alphabetical-start
165 BodyStabilityParser,
166 ConfusablesParser,
167 ConstStabilityParser,
168 DocParser,
169 MacroUseParser,
170 NakedParser,
171 OnConstParser,
172 OnMoveParser,
173 OnTypeErrorParser,
174 OnUnimplementedParser,
175 OnUnknownParser,
176 OnUnmatchedArgsParser,
177 OpaqueParser,
178 RegisterToolParser,
179 RustcAlignParser,
180 RustcAlignStaticParser,
181 RustcCguTestAttributeParser,
182 StabilityParser,
183 UsedParser,
184 // tidy-alphabetical-end
185
186 // tidy-alphabetical-start
187 Combine<AllowInternalUnstableParser>,
188 Combine<CrateTypeParser>,
189 Combine<DebuggerVisualizerParser>,
190 Combine<FeatureParser>,
191 Combine<ForceTargetFeatureParser>,
192 Combine<LinkParser>,
193 Combine<ReprParser>,
194 Combine<RustcAllowConstFnUnstableParser>,
195 Combine<RustcCleanParser>,
196 Combine<RustcDumpLayoutParser>,
197 Combine<RustcMirParser>,
198 Combine<RustcThenThisWouldNeedParser>,
199 Combine<TargetFeatureParser>,
200 Combine<UnstableFeatureBoundParser>,
201 Combine<UnstableRemovedParser>,
202 // tidy-alphabetical-end
203
204 // tidy-alphabetical-start
205 Single<CfiEncodingParser>,
206 Single<CollapseDebugInfoParser>,
207 Single<CoverageParser>,
208 Single<CrateNameParser>,
209 Single<CustomMirParser>,
210 Single<DeprecatedParser>,
211 Single<DoNotRecommendParser>,
212 Single<ExportNameParser>,
213 Single<IgnoreParser>,
214 Single<InlineParser>,
215 Single<InstructionSetParser>,
216 Single<InstrumentFnParser>,
217 Single<LangParser>,
218 Single<LinkNameParser>,
219 Single<LinkOrdinalParser>,
220 Single<LinkSectionParser>,
221 Single<LinkageParser>,
222 Single<MacroExportParser>,
223 Single<MoveSizeLimitParser>,
224 Single<MustNotSuspendParser>,
225 Single<MustUseParser>,
226 Single<OptimizeParser>,
227 Single<PatchableFunctionEntryParser>,
228 Single<PathAttributeParser>,
229 Single<PatternComplexityLimitParser>,
230 Single<ProcMacroDeriveParser>,
231 Single<RecursionLimitParser>,
232 Single<ReexportTestHarnessMainParser>,
233 Single<RustcAbiParser>,
234 Single<RustcAllocatorZeroedVariantParser>,
235 Single<RustcAutodiffParser>,
236 Single<RustcBuiltinMacroParser>,
237 Single<RustcDeprecatedSafe2024Parser>,
238 Single<RustcDiagnosticItemParser>,
239 Single<RustcDocPrimitiveParser>,
240 Single<RustcDummyParser>,
241 Single<RustcDumpDefPathParser>,
242 Single<RustcDumpSymbolNameParser>,
243 Single<RustcForceInlineParser>,
244 Single<RustcIfThisChangedParser>,
245 Single<RustcLegacyConstGenericsParser>,
246 Single<RustcLintOptDenyFieldAccessParser>,
247 Single<RustcMacroTransparencyParser>,
248 Single<RustcMustImplementOneOfParser>,
249 Single<RustcObjcClassParser>,
250 Single<RustcObjcSelectorParser>,
251 Single<RustcScalableVectorParser>,
252 Single<RustcSimdMonomorphizeLaneLimitParser>,
253 Single<RustcSkipDuringMethodDispatchParser>,
254 Single<RustcTestMarkerParser>,
255 Single<SanitizeParser>,
256 Single<ShouldPanicParser>,
257 Single<TestRunnerParser>,
258 Single<TypeLengthLimitParser>,
259 Single<UnrollParser>,
260 Single<WindowsSubsystemParser>,
261 Single<WithoutArgs<AllowInternalUnsafeParser>>,
262 Single<WithoutArgs<AlwaysGcaParser>>,
263 Single<WithoutArgs<AutomaticallyDerivedParser>>,
264 Single<WithoutArgs<ColdParser>>,
265 Single<WithoutArgs<CompilerBuiltinsParser>>,
266 Single<WithoutArgs<ComptimeParser>>,
267 Single<WithoutArgs<ConstContinueParser>>,
268 Single<WithoutArgs<CoroutineParser>>,
269 Single<WithoutArgs<DefaultLibAllocatorParser>>,
270 Single<WithoutArgs<ExportStableParser>>,
271 Single<WithoutArgs<FfiConstParser>>,
272 Single<WithoutArgs<FfiPureParser>>,
273 Single<WithoutArgs<FundamentalParser>>,
274 Single<WithoutArgs<LoopMatchParser>>,
275 Single<WithoutArgs<MacroEscapeParser>>,
276 Single<WithoutArgs<MarkerParser>>,
277 Single<WithoutArgs<MayDangleParser>>,
278 Single<WithoutArgs<NeedsAllocatorParser>>,
279 Single<WithoutArgs<NeedsPanicRuntimeParser>>,
280 Single<WithoutArgs<NoBuiltinsParser>>,
281 Single<WithoutArgs<NoCoreParser>>,
282 Single<WithoutArgs<NoImplicitPreludeParser>>,
283 Single<WithoutArgs<NoLinkParser>>,
284 Single<WithoutArgs<NoMainParser>>,
285 Single<WithoutArgs<NoMangleParser>>,
286 Single<WithoutArgs<NoStdParser>>,
287 Single<WithoutArgs<NonExhaustiveParser>>,
288 Single<WithoutArgs<PanicHandlerParser>>,
289 Single<WithoutArgs<PanicRuntimeParser>>,
290 Single<WithoutArgs<PinV2Parser>>,
291 Single<WithoutArgs<PreludeImportParser>>,
292 Single<WithoutArgs<ProcMacroAttributeParser>>,
293 Single<WithoutArgs<ProcMacroParser>>,
294 Single<WithoutArgs<ProfilerRuntimeParser>>,
295 Single<WithoutArgs<RustcAllocatorParser>>,
296 Single<WithoutArgs<RustcAllocatorZeroedParser>>,
297 Single<WithoutArgs<RustcAllowIncoherentImplParser>>,
298 Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>,
299 Single<WithoutArgs<RustcAsPtrParser>>,
300 Single<WithoutArgs<RustcCanonicalSymbolParser>>,
301 Single<WithoutArgs<RustcCaptureAnalysisParser>>,
302 Single<WithoutArgs<RustcCoherenceIsCoreParser>>,
303 Single<WithoutArgs<RustcCoinductiveParser>>,
304 Single<WithoutArgs<RustcConstStableIndirectParser>>,
305 Single<WithoutArgs<RustcConversionSuggestionParser>>,
306 Single<WithoutArgs<RustcDeallocatorParser>>,
307 Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>,
308 Single<WithoutArgs<RustcDenyExplicitImplParser>>,
309 Single<WithoutArgs<RustcDoNotConstCheckParser>>,
310 Single<WithoutArgs<RustcDumpClausesParser>>,
311 Single<WithoutArgs<RustcDumpDefParentsParser>>,
312 Single<WithoutArgs<RustcDumpGenericsParser>>,
313 Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>,
314 Single<WithoutArgs<RustcDumpInferredOutlivesParser>>,
315 Single<WithoutArgs<RustcDumpItemBoundsParser>>,
316 Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>,
317 Single<WithoutArgs<RustcDumpUserArgsParser>>,
318 Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>,
319 Single<WithoutArgs<RustcDumpVariancesParser>>,
320 Single<WithoutArgs<RustcDumpVtableParser>>,
321 Single<WithoutArgs<RustcDynIncompatibleTraitParser>>,
322 Single<WithoutArgs<RustcEffectiveVisibilityParser>>,
323 Single<WithoutArgs<RustcEiiForeignItemParser>>,
324 Single<WithoutArgs<RustcEvaluateWhereClausesParser>>,
325 Single<WithoutArgs<RustcExhaustiveParser>>,
326 Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>,
327 Single<WithoutArgs<RustcInheritOverflowChecksParser>>,
328 Single<WithoutArgs<RustcInsignificantDtorParser>>,
329 Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>,
330 Single<WithoutArgs<RustcIntrinsicParser>>,
331 Single<WithoutArgs<RustcLintOptTyParser>>,
332 Single<WithoutArgs<RustcLintQueryInstabilityParser>>,
333 Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>,
334 Single<WithoutArgs<RustcMainParser>>,
335 Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>,
336 Single<WithoutArgs<RustcNoImplicitAutorefsParser>>,
337 Single<WithoutArgs<RustcNoImplicitBoundsParser>>,
338 Single<WithoutArgs<RustcNoMirInlineParser>>,
339 Single<WithoutArgs<RustcNoWritableParser>>,
340 Single<WithoutArgs<RustcNonConstTraitMethodParser>>,
341 Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>,
342 Single<WithoutArgs<RustcNounwindParser>>,
343 Single<WithoutArgs<RustcOffloadKernelParser>>,
344 Single<WithoutArgs<RustcPanicsWhenZeroParser>>,
345 Single<WithoutArgs<RustcParenSugarParser>>,
346 Single<WithoutArgs<RustcPassByValueParser>>,
347 Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>,
348 Single<WithoutArgs<RustcPreserveUbChecksParser>>,
349 Single<WithoutArgs<RustcProcMacroDeclsParser>>,
350 Single<WithoutArgs<RustcPubTransparentParser>>,
351 Single<WithoutArgs<RustcReallocatorParser>>,
352 Single<WithoutArgs<RustcRegionsParser>>,
353 Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>,
354 Single<WithoutArgs<RustcSpecializationTraitParser>>,
355 Single<WithoutArgs<RustcStdInternalSymbolParser>>,
356 Single<WithoutArgs<RustcStrictCoherenceParser>>,
357 Single<WithoutArgs<RustcTrivialFieldReadsParser>>,
358 Single<WithoutArgs<SplatParser>>,
359 Single<WithoutArgs<ThreadLocalParser>>,
360 Single<WithoutArgs<TrackCallerParser>>,
361 // tidy-alphabetical-end
362 ];
363);
364
365/// Context given to every attribute parser when accepting
366///
367/// Gives [`AttributeParser`]s enough information to create errors, for example.
368pub struct AcceptContext<'f, 'sess> {
369 pub(crate) shared: SharedContext<'f, 'sess>,
370
371 /// The outer span of the attribute currently being parsed
372 ///
373 /// ```none
374 /// #[attribute(...)]
375 /// ^^^^^^^^^^^^^^^^^ outer span
376 /// ```
377 /// For attributes in `cfg_attr`, the outer span and inner spans are equal.
378 pub(crate) attr_span: Span,
379 /// The inner span of the attribute currently being parsed.
380 ///
381 /// ```none
382 /// #[attribute(...)]
383 /// ^^^^^^^^^^^^^^ inner span
384 /// ```
385 pub(crate) inner_span: Span,
386
387 /// Whether it is an inner or outer attribute.
388 pub(crate) attr_style: AttrStyle,
389
390 /// A description of the thing we are parsing using this attribute parser.
391 /// We are not only using these parsers for attributes, but also for macros such as the `cfg!()` macro.
392 pub(crate) parsed_description: ParsedDescription,
393
394 /// The expected structure of the attribute.
395 ///
396 /// Used in reporting errors to give a hint to users what the attribute *should* look like.
397 pub(crate) template: &'f AttributeTemplate,
398
399 /// The safety attribute (if any) applied to the attribute.
400 pub(crate) attr_safety: Safety,
401
402 /// The name of the attribute we're currently accepting.
403 pub(crate) attr_path: AttrPath,
404
405 /// Used for `AllowedTargets::ManuallyChecked`, to assert that the manual target check has been done
406 #[cfg(debug_assertions)]
407 pub(crate) has_target_been_checked: bool,
408}
409
410impl<'f, 'sess: 'f> SharedContext<'f, 'sess> {
411 pub(crate) fn emit_err(&self, diag: impl for<'x> Diagnostic<'x>) -> ErrorGuaranteed {
412 self.cx.emit_err(diag)
413 }
414
415 /// Emit a lint. This method is somewhat special, since lints emitted during attribute parsing
416 /// must be delayed until after HIR is built. This method will take care of the details of
417 /// that.
418 pub(crate) fn emit_lint(
419 &mut self,
420 lint: &'static Lint,
421 diagnostic: impl for<'x> Diagnostic<'x, ()> + DynSend + DynSync + 'static,
422 span: impl Into<MultiSpan>,
423 ) {
424 self.emit_lint_inner(
425 lint,
426 EmitAttribute(Box::new(move |dcx, level, _| diagnostic.into_diag(dcx, level))),
427 span,
428 );
429 }
430
431 pub(crate) fn emit_lint_with_sess<
432 F: for<'a> FnOnce(DiagCtxtHandle<'a>, Level, &Session) -> Diag<'a, ()>
433 + DynSend
434 + DynSync
435 + 'static,
436 >(
437 &mut self,
438 lint: &'static Lint,
439 callback: F,
440 span: impl Into<MultiSpan>,
441 ) {
442 self.emit_lint_inner(lint, EmitAttribute(Box::new(callback)), span);
443 }
444
445 fn emit_lint_inner(
446 &mut self,
447 lint: &'static Lint,
448 kind: EmitAttribute,
449 span: impl Into<MultiSpan>,
450 ) {
451 #[cfg(debug_assertions)]
452 self.has_lint_been_emitted.store(true, Ordering::Relaxed);
453 if !#[allow(non_exhaustive_omitted_patterns)] match self.should_emit {
ShouldEmit::ErrorsAndLints { .. } | ShouldEmit::EarlyFatal {
also_emit_lints: true } => true,
_ => false,
}matches!(
454 self.should_emit,
455 ShouldEmit::ErrorsAndLints { .. } | ShouldEmit::EarlyFatal { also_emit_lints: true }
456 ) {
457 return;
458 }
459 (self.emit_lint)(LintId::of(lint), span.into(), kind);
460 }
461
462 pub(crate) fn warn_unused_duplicate(&mut self, used_span: Span, unused_span: Span) {
463 self.emit_lint(
464 UNUSED_ATTRIBUTES,
465 UnusedDuplicate { this: unused_span, other: used_span, warning: false },
466 unused_span,
467 )
468 }
469
470 pub(crate) fn warn_unused_duplicate_future_error(
471 &mut self,
472 used_span: Span,
473 unused_span: Span,
474 ) {
475 self.emit_lint(
476 UNUSED_ATTRIBUTES,
477 UnusedDuplicate { this: unused_span, other: used_span, warning: true },
478 unused_span,
479 )
480 }
481}
482
483impl<'f, 'sess: 'f> AcceptContext<'f, 'sess> {
484 pub(crate) fn adcx(&mut self) -> AttributeDiagnosticContext<'_, 'f, 'sess> {
485 AttributeDiagnosticContext { ctx: self, custom_suggestions: Vec::new() }
486 }
487
488 /// Asserts that this `MetaItem` is a list that contains a single element. Emits an error and
489 /// returns `None` if it is not the case.
490 ///
491 /// Some examples:
492 ///
493 /// - In `#[allow(warnings)]`, `warnings` is returned
494 /// - In `#[cfg_attr(docsrs, doc = "foo")]`, `None` is returned, "expected a single argument
495 /// here" is emitted.
496 /// - In `#[cfg()]`, `None` is returned, "expected an argument here" is emitted.
497 ///
498 /// The provided span is used as a fallback for diagnostic generation in case `arg` does not
499 /// contain any. It should be the span of the node that contains `arg`.
500 pub(crate) fn expect_single_element_list<'arg>(
501 &mut self,
502 arg: &'arg ArgParser,
503 span: Span,
504 ) -> Option<&'arg MetaItemOrLitParser> {
505 let ArgParser::List(l) = arg else {
506 self.adcx().expected_list(span, arg);
507 return None;
508 };
509
510 let Some(single) = l.as_single() else {
511 self.adcx().expected_single_argument(l.span, l.len());
512 return None;
513 };
514
515 Some(single)
516 }
517
518 /// Asserts that an [`ArgParser`] is a list and returns it, or emits an error and returns
519 /// `None`.
520 ///
521 /// Some examples:
522 ///
523 /// - `#[allow(clippy::complexity)]`: `(clippy::complexity)` is a list
524 /// - `#[rustfmt::skip::macros(target_macro_name)]`: `(target_macro_name)` is a list
525 ///
526 /// This is a higher-level (and harder to misuse) wrapper over [`ArgParser::as_list`] that
527 /// allows using `?` when the attribute parsing function allows it. You may still want to use
528 /// [`ArgParser::as_list`] for the following reasons:
529 ///
530 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
531 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
532 pub(crate) fn expect_list<'arg>(
533 &mut self,
534 args: &'arg ArgParser,
535 span: Span,
536 ) -> Option<&'arg MetaItemListParser> {
537 let list = args.as_list();
538 if list.is_none() {
539 self.adcx().expected_list(span, args);
540 }
541 list
542 }
543
544 /// Asserts that a [`MetaItemListParser`] contains a single element and returns it, or emits an
545 /// error and returns `None`.
546 ///
547 /// This is a higher-level (and harder to misuse) wrapper over [`MetaItemListParser::as_single`],
548 /// that allows using `?` to early return. You may still want to use
549 /// [`MetaItemListParser::as_single`] for the following reasons:
550 ///
551 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
552 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
553 pub(crate) fn expect_single<'arg>(
554 &mut self,
555 list: &'arg MetaItemListParser,
556 ) -> Option<&'arg MetaItemOrLitParser> {
557 let single = list.as_single();
558 if single.is_none() {
559 self.adcx().expected_single_argument(list.span, list.len());
560 }
561 single
562 }
563
564 /// Asserts that a node is a name-value pair.
565 ///
566 /// Some examples:
567 ///
568 /// - `#[clippy::cyclomatic_complexity = "100"]`: `clippy::cyclomatic_complexity = "100"` is a
569 /// name-value pair, where the name is a path (`clippy::cyclomatic_complexity`). You already
570 /// checked the path to get an `ArgParser`, so this method will effectively only assert that
571 /// the `= "100"` is there and returns it.
572 /// - `#[doc = "hello"]`: `doc = "hello` is also a name value pair. `= "hello"` is returned.
573 /// - `#[serde(rename_all = "lowercase")]`: `rename_all = "lowercase"` is a name value pair,
574 /// where the name is an identifier (`rename_all`) and the value is a literal (`"lowercase"`).
575 /// This returns both the path and the value.
576 ///
577 /// `arg` must be a reference to any node that may contain a name-value pair, that is:
578 ///
579 /// - [`MetaItemOrLitParser`],
580 /// - [`MetaItemParser`],
581 /// - [`ArgParser`].
582 ///
583 /// `name` can be set to `Some` for a nicer error message talking about the specific name that
584 /// was found lacking a value.
585 ///
586 /// This is a higher-level (and harder to misuse) wrapper over multiple `as_` methods in the
587 /// [`parser`][crate::parser] module. You may still want to use the lower-level methods for the
588 /// following reasons:
589 ///
590 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
591 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
592 pub(crate) fn expect_name_value<'arg, Arg>(
593 &mut self,
594 arg: &'arg Arg,
595 span: Span,
596 name: Option<Symbol>,
597 ) -> Option<Arg::Output<'arg>>
598 where
599 Arg: ExpectNameValue,
600 {
601 arg.expect_name_value(self, span, name)
602 }
603
604 /// Assert that an [`ArgParser`] has no args, or emits an error and return `None`.
605 ///
606 /// This is a higher-level (and harder to misuse) wrapper over multiple
607 /// [`ArgParser::as_no_args`]. You may still want to use the lower-level methods for the
608 /// following reasons:
609 ///
610 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
611 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
612 pub(crate) fn expect_no_args<'arg>(&mut self, arg: &'arg ArgParser) -> Option<()> {
613 if let Err(span) = arg.as_no_args() {
614 self.adcx().expected_no_args(span);
615 return None;
616 }
617
618 Some(())
619 }
620
621 /// Asserts that a node is a string literal, or emits an error and return `None`
622 ///
623 /// `arg` must be a reference to any node that may contain a name-value pair, that is:
624 ///
625 /// - [`NameValueParser`],
626 /// - [`MetaItemOrLitParser`],
627 ///
628 /// This is a higher-level (and harder to misuse) wrapper over multiple `as_` methods in the
629 /// [`parser`][crate::parser] module. You may still want to use the lower-level methods for the
630 /// following reasons:
631 ///
632 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
633 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
634 pub(crate) fn expect_string_literal<'arg, Arg>(&mut self, arg: &'arg Arg) -> Option<Symbol>
635 where
636 Arg: ExpectStringLiteral,
637 {
638 arg.expect_string_literal(self)
639 }
640}
641
642pub(crate) trait ExpectNameValue {
643 type Output<'a>
644 where
645 Self: 'a;
646
647 fn expect_name_value<'a, 'f, 'sess>(
648 &'a self,
649 cx: &mut AcceptContext<'f, 'sess>,
650 span: Span,
651 name: Option<Symbol>,
652 ) -> Option<Self::Output<'a>>;
653}
654
655impl ExpectNameValue for MetaItemOrLitParser {
656 type Output<'a> = (Ident, &'a NameValueParser);
657
658 fn expect_name_value<'a, 'f, 'sess>(
659 &'a self,
660 cx: &mut AcceptContext<'f, 'sess>,
661 span: Span,
662 name: Option<Symbol>,
663 ) -> Option<Self::Output<'a>> {
664 let Some(meta_item) = self.meta_item() else {
665 cx.adcx().expected_name_value(self.span(), name);
666 return None;
667 };
668
669 meta_item.expect_name_value(cx, span, name)
670 }
671}
672
673impl ExpectNameValue for MetaItemParser {
674 type Output<'a> = (Ident, &'a NameValueParser);
675
676 fn expect_name_value<'a, 'f, 'sess>(
677 &'a self,
678 cx: &mut AcceptContext<'f, 'sess>,
679 _span: Span, // Not needed: `MetaItemOrLitParser` carry its own span.
680 name: Option<Symbol>,
681 ) -> Option<Self::Output<'a>> {
682 let word = self.path().word();
683 let arg = self.args().as_name_value();
684
685 if word.is_none() {
686 cx.adcx().expected_identifier(self.path().span());
687 }
688
689 if arg.is_none() {
690 cx.adcx().expected_name_value(self.span(), name);
691 }
692
693 word.zip(arg)
694 }
695}
696
697impl ExpectNameValue for ArgParser {
698 type Output<'a> = &'a NameValueParser;
699
700 fn expect_name_value<'a, 'f, 'sess>(
701 &'a self,
702 cx: &mut AcceptContext<'f, 'sess>,
703 span: Span,
704 name: Option<Symbol>,
705 ) -> Option<Self::Output<'a>> {
706 let Some(nv) = self.as_name_value() else {
707 cx.adcx().expected_name_value(span, name);
708 return None;
709 };
710
711 Some(nv)
712 }
713}
714
715pub(crate) trait ExpectStringLiteral {
716 fn expect_string_literal<'f, 'sess>(&self, cx: &mut AcceptContext<'f, 'sess>)
717 -> Option<Symbol>;
718}
719
720impl ExpectStringLiteral for NameValueParser {
721 fn expect_string_literal<'f, 'sess>(
722 &self,
723 cx: &mut AcceptContext<'f, 'sess>,
724 ) -> Option<Symbol> {
725 let value = self.value_as_str();
726 if value.is_none() {
727 cx.adcx().expected_string_literal(self.value_span, Some(self.value_as_lit()));
728 }
729 value
730 }
731}
732
733impl ExpectStringLiteral for MetaItemOrLitParser {
734 fn expect_string_literal<'f, 'sess>(
735 &self,
736 cx: &mut AcceptContext<'f, 'sess>,
737 ) -> Option<Symbol> {
738 let Some(lit) = self.as_lit() else {
739 cx.adcx().expected_string_literal(self.span(), None);
740 return None;
741 };
742
743 let str = lit.value_as_str();
744
745 if str.is_none() {
746 cx.adcx().expected_string_literal(self.span(), Some(lit));
747 }
748
749 str
750 }
751}
752
753impl<'f, 'sess> Deref for AcceptContext<'f, 'sess> {
754 type Target = SharedContext<'f, 'sess>;
755
756 fn deref(&self) -> &Self::Target {
757 &self.shared
758 }
759}
760
761impl DerefMut for AcceptContext<'_, '_> {
762 fn deref_mut(&mut self) -> &mut Self::Target {
763 &mut self.shared
764 }
765}
766
767/// Context given to every attribute parser during finalization.
768///
769/// Gives [`AttributeParser`](crate::attributes::AttributeParser)s enough information to create
770/// errors, for example.
771pub struct SharedContext<'p, 'sess> {
772 /// The parse context, gives access to the session and the
773 /// diagnostics context.
774 pub(crate) cx: &'p mut AttributeParser<'sess>,
775 /// The span of the syntactical component this attribute was applied to
776 pub(crate) target_span: Span,
777 pub(crate) target: Target,
778
779 pub(crate) emit_lint: &'p mut dyn FnMut(LintId, MultiSpan, EmitAttribute),
780
781 /// This atomic bool keeps track of whether any lint has been emitted.
782 /// This is used for the arguments-used check.
783 #[cfg(debug_assertions)]
784 pub(crate) has_lint_been_emitted: AtomicBool,
785}
786
787/// Context given to every attribute parser during finalization.
788///
789/// Gives [`AttributeParser`](crate::attributes::AttributeParser)s enough information to create
790/// errors, for example.
791pub(crate) struct FinalizeContext<'p, 'sess> {
792 pub(crate) shared: SharedContext<'p, 'sess>,
793
794 /// A list of all attribute on this syntax node.
795 ///
796 /// Useful for compatibility checks with other attributes in [`finalize`](crate::attributes::AttributeParser::finalize)
797 ///
798 /// Usually, you should use normal attribute parsing logic instead,
799 /// especially when making a *denylist* of other attributes.
800 pub(crate) all_attrs: &'p [RefPathParser<'p>],
801}
802
803impl<'p, 'sess: 'p> Deref for FinalizeContext<'p, 'sess> {
804 type Target = SharedContext<'p, 'sess>;
805
806 fn deref(&self) -> &Self::Target {
807 &self.shared
808 }
809}
810
811impl<'p, 'sess: 'p> DerefMut for FinalizeContext<'p, 'sess> {
812 fn deref_mut(&mut self) -> &mut Self::Target {
813 &mut self.shared
814 }
815}
816
817/// Context given to deferred cross-attribute checks (`finalize_check`).
818///
819/// These checks run *after* every attribute on an item has been finalized, so unlike
820/// [`FinalizeContext`] this context can also inspect the fully parsed attributes via
821/// [`parsed_attrs`](Self::parsed_attrs).
822pub(crate) struct FinalizeCheckContext<'p, 'sess> {
823 pub(crate) shared: SharedContext<'p, 'sess>,
824
825 /// A list of all attribute on this syntax node.
826 ///
827 /// Useful for compatibility checks with other attributes.
828 ///
829 /// Unlike [`parsed_attrs`](Self::parsed_attrs), this only contains the *paths* of the
830 /// attributes.
831 pub(crate) all_attrs: &'p [RefPathParser<'p>],
832
833 /// All attributes that have been parsed on this syntax node.
834 ///
835 /// Unlike [`all_attrs`](Self::all_attrs), this contains the fully parsed attributes.
836 pub(crate) parsed_attrs: &'p [Attribute],
837
838 /// The AST item these attributes were applied to, when the target is an item.
839 /// Used by `finalize_check` to inspect item structure that is not encoded in [`Target`].
840 pub(crate) target_item: Option<&'p rustc_ast::ast::Item>,
841}
842
843impl<'p, 'sess: 'p> Deref for FinalizeCheckContext<'p, 'sess> {
844 type Target = SharedContext<'p, 'sess>;
845
846 fn deref(&self) -> &Self::Target {
847 &self.shared
848 }
849}
850
851impl<'p, 'sess: 'p> DerefMut for FinalizeCheckContext<'p, 'sess> {
852 fn deref_mut(&mut self) -> &mut Self::Target {
853 &mut self.shared
854 }
855}
856
857impl<'p, 'sess: 'p> Deref for SharedContext<'p, 'sess> {
858 type Target = AttributeParser<'sess>;
859
860 fn deref(&self) -> &Self::Target {
861 self.cx
862 }
863}
864
865impl<'p, 'sess: 'p> DerefMut for SharedContext<'p, 'sess> {
866 fn deref_mut(&mut self) -> &mut Self::Target {
867 self.cx
868 }
869}
870
871#[derive(#[automatically_derived]
impl ::core::marker::Copy for ShouldEmit { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for ShouldEmit { }
#[automatically_derived]
impl ::core::clone::Clone for ShouldEmit {
#[inline]
fn clone(&self) -> ShouldEmit {
let _: ::core::clone::AssertParamIsClone<bool>;
let _: ::core::clone::AssertParamIsClone<Recovery>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ShouldEmit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ShouldEmit::EarlyFatal { also_emit_lints: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"EarlyFatal", "also_emit_lints", &__self_0),
ShouldEmit::ErrorsAndLints { recovery: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"ErrorsAndLints", "recovery", &__self_0),
ShouldEmit::Nothing =>
::core::fmt::Formatter::write_str(f, "Nothing"),
}
}
}Debug)]
872pub enum ShouldEmit {
873 /// The operations will emit errors, and lints, and errors are fatal.
874 ///
875 /// Only relevant when early parsing, in late parsing equivalent to `ErrorsAndLints`.
876 /// Late parsing is never fatal, and instead tries to emit as many diagnostics as possible.
877 EarlyFatal { also_emit_lints: bool },
878 /// The operation will emit errors and lints.
879 /// This is usually what you need.
880 ErrorsAndLints {
881 /// Whether [`ArgParser`] will attempt to recover from errors.
882 ///
883 /// Whether it is allowed to recover from bad input (like an invalid literal). Setting
884 /// this to `Forbidden` will instead return early, and not raise errors except at the top
885 /// level (in [`ArgParser::from_attr_args`]).
886 recovery: Recovery,
887 },
888 /// The operation will *not* emit errors and lints.
889 ///
890 /// The parser can still call `delay_bug`, so you *must* ensure that this operation will also be
891 /// called with `ShouldEmit::ErrorsAndLints`.
892 Nothing,
893}
894
895impl ShouldEmit {
896 pub(crate) fn emit_err(self, diag: Diag<'_>) -> ErrorGuaranteed {
897 match self {
898 ShouldEmit::EarlyFatal { .. } if diag.level() == Level::DelayedBug => diag.emit(),
899 ShouldEmit::EarlyFatal { .. } => diag.upgrade_to_fatal().emit(),
900 ShouldEmit::ErrorsAndLints { .. } => diag.emit(),
901 ShouldEmit::Nothing => diag.delay_as_bug(),
902 }
903 }
904}
905
906/// The interface for issuing argument parsing related diagnostics.
907///
908/// It can be obtained through the [`adcx`](AcceptContext::adcx) method on [`AcceptContext`].
909pub(crate) struct AttributeDiagnosticContext<'a, 'f, 'sess> {
910 ctx: &'a mut AcceptContext<'f, 'sess>,
911 custom_suggestions: Vec<Suggestion>,
912}
913
914impl<'a, 'f, 'sess: 'f> AttributeDiagnosticContext<'a, 'f, 'sess> {
915 fn emit_parse_error(
916 &mut self,
917 mut span: Span,
918 reason: AttributeParseErrorReason<'_>,
919 ) -> ErrorGuaranteed {
920 let suggestions = if self.custom_suggestions.is_empty() {
921 AttributeParseErrorSuggestions::CreatedByTemplate(self.suggestions())
922 } else {
923 AttributeParseErrorSuggestions::CreatedByParser(mem::take(&mut self.custom_suggestions))
924 };
925
926 // If the span is the full attribute (including the `#[`/`]` delimiters) shrink it to
927 // exclude those delimiters, because that's what we want in error messages.
928 if span == self.attr_span {
929 span = self.inner_span;
930 }
931
932 self.emit_err(AttributeParseError {
933 span,
934 inner_span: self.inner_span,
935 template: *self.template,
936 path: self.attr_path.clone(),
937 description: self.parsed_description,
938 reason,
939 suggestions,
940 })
941 }
942
943 /// Adds a custom suggestion to the diagnostic. This also prevents the default (template-based)
944 /// suggestion to be emitted.
945 pub(crate) fn push_suggestion(&mut self, msg: String, span: Span, code: String) -> &mut Self {
946 self.custom_suggestions.push(Suggestion { msg, sp: span, code });
947 self
948 }
949}
950
951/// Helpers that can be used to generate errors during attribute parsing.
952impl<'a, 'f, 'sess: 'f> AttributeDiagnosticContext<'a, 'f, 'sess> {
953 pub(crate) fn expected_integer_literal_in_range(
954 &mut self,
955 span: Span,
956 lower_bound: isize,
957 upper_bound: isize,
958 ) -> ErrorGuaranteed {
959 self.emit_parse_error(
960 span,
961 AttributeParseErrorReason::ExpectedIntegerLiteralInRange { lower_bound, upper_bound },
962 )
963 }
964
965 /// The provided span is used as a fallback in case `args` does not contain any. It should be
966 /// the span of the node that contains `args`.
967 pub(crate) fn expected_list(&mut self, span: Span, args: &ArgParser) -> ErrorGuaranteed {
968 let span = match args {
969 ArgParser::NoArgs => span,
970 ArgParser::List(list) => list.span,
971 ArgParser::NameValue(nv) => nv.args_span(),
972 };
973 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedList)
974 }
975
976 pub(crate) fn expected_list_with_num_args_or_more(
977 &mut self,
978 args: usize,
979 span: Span,
980 ) -> ErrorGuaranteed {
981 self.emit_parse_error(
982 span,
983 AttributeParseErrorReason::ExpectedListWithNumArgsOrMore { args },
984 )
985 }
986
987 pub(crate) fn expected_list_or_no_args(&mut self, span: Span) -> ErrorGuaranteed {
988 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedListOrNoArgs)
989 }
990
991 pub(crate) fn expected_nv_or_no_args(&mut self, span: Span) -> ErrorGuaranteed {
992 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNameValueOrNoArgs)
993 }
994
995 pub(crate) fn expected_non_empty_string_literal(&mut self, span: Span) -> ErrorGuaranteed {
996 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNonEmptyStringLiteral)
997 }
998
999 pub(crate) fn expected_no_args(&mut self, span: Span) -> ErrorGuaranteed {
1000 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNoArgs)
1001 }
1002
1003 /// Emit an error that a `name` was expected here
1004 pub(crate) fn expected_identifier(&mut self, span: Span) -> ErrorGuaranteed {
1005 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedIdentifier)
1006 }
1007
1008 /// Emit an error that a `name = value` pair was expected at this span. The symbol can be given for
1009 /// a nicer error message talking about the specific name that was found lacking a value.
1010 fn expected_name_value(&mut self, span: Span, name: Option<Symbol>) -> ErrorGuaranteed {
1011 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNameValue(name))
1012 }
1013
1014 /// Emit an error that a `name = value` argument is missing in a list of name-value pairs.
1015 pub(crate) fn missing_name_value(&mut self, span: Span, name: Symbol) -> ErrorGuaranteed {
1016 self.emit_parse_error(span, AttributeParseErrorReason::MissingNameValue(name))
1017 }
1018
1019 /// Emit an error that a `name = value` pair was found where that name was already seen.
1020 pub(crate) fn duplicate_key(&mut self, span: Span, key: Symbol) -> ErrorGuaranteed {
1021 self.emit_parse_error(span, AttributeParseErrorReason::DuplicateKey(key))
1022 }
1023
1024 /// An error that should be emitted when a [`MetaItemOrLitParser`]
1025 /// was expected *not* to be a literal, but instead a meta item.
1026 pub(crate) fn expected_not_literal(&mut self, span: Span) -> ErrorGuaranteed {
1027 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNotLiteral)
1028 }
1029
1030 /// Signals that we expected exactly one argument and that we got either zero or two or more.
1031 /// The `provided_arguments` argument allows distinguishing between "expected an argument here"
1032 /// (when zero arguments are provided) and "expect a single argument here" (when two or more
1033 /// arguments are provided).
1034 pub(crate) fn expected_single_argument(
1035 &mut self,
1036 span: Span,
1037 provided_arguments: usize,
1038 ) -> ErrorGuaranteed {
1039 let reason = if provided_arguments == 0 {
1040 AttributeParseErrorReason::ExpectedArgument
1041 } else {
1042 AttributeParseErrorReason::ExpectedSingleArgument
1043 };
1044
1045 self.emit_parse_error(span, reason)
1046 }
1047
1048 pub(crate) fn expected_at_least_one_argument(&mut self, span: Span) -> ErrorGuaranteed {
1049 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedAtLeastOneArgument)
1050 }
1051
1052 /// Produces an error along the lines of `expected one of [foo, meow]`
1053 pub(crate) fn expected_specific_argument(
1054 &mut self,
1055 span: Span,
1056 possibilities: &[Symbol],
1057 ) -> ErrorGuaranteed {
1058 self.emit_parse_error(
1059 span,
1060 AttributeParseErrorReason::ExpectedSpecificArgument {
1061 possibilities,
1062 strings: false,
1063 list: false,
1064 },
1065 )
1066 }
1067
1068 /// Produces an error along the lines of `expected one of [foo, meow] as an argument`.
1069 /// i.e. slightly different wording to [`expected_specific_argument`](Self::expected_specific_argument).
1070 pub(crate) fn expected_specific_argument_and_list(
1071 &mut self,
1072 span: Span,
1073 possibilities: &[Symbol],
1074 ) -> ErrorGuaranteed {
1075 self.emit_parse_error(
1076 span,
1077 AttributeParseErrorReason::ExpectedSpecificArgument {
1078 possibilities,
1079 strings: false,
1080 list: true,
1081 },
1082 )
1083 }
1084
1085 /// produces an error along the lines of `expected one of ["foo", "meow"]`
1086 pub(crate) fn expected_specific_argument_strings(
1087 &mut self,
1088 span: Span,
1089 possibilities: &[Symbol],
1090 ) -> ErrorGuaranteed {
1091 self.emit_parse_error(
1092 span,
1093 AttributeParseErrorReason::ExpectedSpecificArgument {
1094 possibilities,
1095 strings: true,
1096 list: false,
1097 },
1098 )
1099 }
1100
1101 pub(crate) fn warn_empty_attribute(&mut self, span: Span) {
1102 let attr_path = self.attr_path.to_string();
1103 let valid_without_list = self.template.word;
1104 self.emit_lint(
1105 UNUSED_ATTRIBUTES,
1106 crate::diagnostics::EmptyAttributeList {
1107 attr_span: span,
1108 attr_path,
1109 valid_without_list,
1110 },
1111 span,
1112 );
1113 }
1114
1115 pub(crate) fn warn_ill_formed_attribute_input(&mut self, lint: &'static Lint) {
1116 self.warn_ill_formed_attribute_input_with_help(lint, None)
1117 }
1118 pub(crate) fn warn_ill_formed_attribute_input_with_help(
1119 &mut self,
1120 lint: &'static Lint,
1121 help: Option<String>,
1122 ) {
1123 let suggestions = self.suggestions();
1124 let span = self.inner_span;
1125 self.emit_lint(
1126 lint,
1127 crate::diagnostics::IllFormedAttributeInput::new(&suggestions, None, help.as_deref()),
1128 span,
1129 );
1130 }
1131
1132 pub(crate) fn suggestions(&self) -> Vec<String> {
1133 self.template.suggestions(self.parsed_description, self.attr_safety, &self.attr_path)
1134 }
1135 /// Error that a string literal was expected.
1136 /// You can optionally give the literal you did find (which you found not to be a string literal)
1137 /// which can make better errors. For example, if the literal was a byte string it will suggest
1138 /// removing the `b` prefix.
1139 pub(crate) fn expected_string_literal(
1140 &mut self,
1141 span: Span,
1142 actual_literal: Option<&MetaItemLit>,
1143 ) -> ErrorGuaranteed {
1144 self.emit_parse_error(
1145 span,
1146 AttributeParseErrorReason::ExpectedStringLiteral {
1147 byte_string: actual_literal.and_then(|i| {
1148 i.kind.is_bytestr().then(|| self.sess().source_map().start_point(i.span))
1149 }),
1150 },
1151 )
1152 }
1153
1154 /// Error that a filename string literal was expected.
1155 pub(crate) fn expected_filename_literal(&mut self, span: Span) {
1156 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedFilenameLiteral);
1157 }
1158
1159 pub(crate) fn expected_integer_literal(&mut self, span: Span) -> ErrorGuaranteed {
1160 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedIntegerLiteral)
1161 }
1162}
1163
1164impl<'f, 'sess: 'f> Deref for AttributeDiagnosticContext<'_, 'f, 'sess> {
1165 type Target = AcceptContext<'f, 'sess>;
1166
1167 fn deref(&self) -> &Self::Target {
1168 self.ctx
1169 }
1170}
1171
1172impl<'f, 'sess: 'f> DerefMut for AttributeDiagnosticContext<'_, 'f, 'sess> {
1173 fn deref_mut(&mut self) -> &mut Self::Target {
1174 self.ctx
1175 }
1176}
1177
1178/// Represents a custom suggestion that an attribute parser can emit.
1179pub(crate) struct Suggestion {
1180 pub(crate) msg: String,
1181 pub(crate) sp: Span,
1182 pub(crate) code: String,
1183}