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, DiagLocation, 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(&mut 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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>> =
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
->
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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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>>>>
=
{
#[allow(mismatched_lifetime_syntaxes)]
#[inline]
fn __rust_std_internal_init_fn(_lifetime_elision:
::std::marker::PhantomData<&'static ()>)
-> 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(::std::marker::PhantomData))
}
} 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(::std::marker::PhantomData))
}
}
})
}
};
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 #[track_caller]
412 pub(crate) fn emit_err(&self, diag: impl for<'x> Diagnostic<'x>) -> ErrorGuaranteed {
413 self.cx.emit_err(diag)
414 }
415
416 /// Emit a lint. This method is somewhat special, since lints emitted during attribute parsing
417 /// must be delayed until after HIR is built. This method will take care of the details of
418 /// that.
419 #[track_caller]
420 pub(crate) fn emit_lint(
421 &mut self,
422 lint: &'static Lint,
423 diagnostic: impl for<'x> Diagnostic<'x> + DynSend + DynSync + 'static,
424 span: impl Into<MultiSpan>,
425 ) {
426 let emitted_at = DiagLocation::caller();
427 self.emit_lint_inner(
428 lint,
429 EmitAttribute(Box::new(move |dcx, level, _| {
430 let mut diag = diagnostic.into_diag(dcx, level);
431 diag.emitted_at = emitted_at;
432 diag
433 })),
434 span,
435 );
436 }
437
438 pub(crate) fn emit_lint_with_sess<
439 F: for<'a> FnOnce(DiagCtxtHandle<'a>, Level, &Session) -> Diag<'a>
440 + DynSend
441 + DynSync
442 + 'static,
443 >(
444 &mut self,
445 lint: &'static Lint,
446 callback: F,
447 span: impl Into<MultiSpan>,
448 ) {
449 self.emit_lint_inner(lint, EmitAttribute(Box::new(callback)), span);
450 }
451
452 fn emit_lint_inner(
453 &mut self,
454 lint: &'static Lint,
455 kind: EmitAttribute,
456 span: impl Into<MultiSpan>,
457 ) {
458 #[cfg(debug_assertions)]
459 self.has_lint_been_emitted.store(true, Ordering::Relaxed);
460 if !#[allow(non_exhaustive_omitted_patterns)] match self.should_emit {
ShouldEmit::ErrorsAndLints { .. } | ShouldEmit::EarlyFatal {
also_emit_lints: true } => true,
_ => false,
}matches!(
461 self.should_emit,
462 ShouldEmit::ErrorsAndLints { .. } | ShouldEmit::EarlyFatal { also_emit_lints: true }
463 ) {
464 return;
465 }
466 (self.emit_lint)(LintId::of(lint), span.into(), kind);
467 }
468
469 pub(crate) fn warn_unused_duplicate(&mut self, used_span: Span, unused_span: Span) {
470 self.emit_lint(
471 UNUSED_ATTRIBUTES,
472 UnusedDuplicate { this: unused_span, other: used_span, warning: false },
473 unused_span,
474 )
475 }
476
477 pub(crate) fn warn_unused_duplicate_future_error(
478 &mut self,
479 used_span: Span,
480 unused_span: Span,
481 ) {
482 self.emit_lint(
483 UNUSED_ATTRIBUTES,
484 UnusedDuplicate { this: unused_span, other: used_span, warning: true },
485 unused_span,
486 )
487 }
488}
489
490impl<'f, 'sess: 'f> AcceptContext<'f, 'sess> {
491 pub(crate) fn adcx(&mut self) -> AttributeDiagnosticContext<'_, 'f, 'sess> {
492 AttributeDiagnosticContext { ctx: self, custom_suggestions: Vec::new() }
493 }
494
495 /// Asserts that this `MetaItem` is a list that contains a single element. Emits an error and
496 /// returns `None` if it is not the case.
497 ///
498 /// Some examples:
499 ///
500 /// - In `#[allow(warnings)]`, `warnings` is returned
501 /// - In `#[cfg_attr(docsrs, doc = "foo")]`, `None` is returned, "expected a single argument
502 /// here" is emitted.
503 /// - In `#[cfg()]`, `None` is returned, "expected an argument here" is emitted.
504 ///
505 /// The provided span is used as a fallback for diagnostic generation in case `arg` does not
506 /// contain any. It should be the span of the node that contains `arg`.
507 #[track_caller]
508 pub(crate) fn expect_single_element_list<'arg>(
509 &mut self,
510 arg: &'arg ArgParser,
511 span: Span,
512 ) -> Option<&'arg MetaItemOrLitParser> {
513 let ArgParser::List(l) = arg else {
514 self.adcx().expected_list(span, arg);
515 return None;
516 };
517
518 let Some(single) = l.as_single() else {
519 self.adcx().expected_single_argument(l.span, l.len());
520 return None;
521 };
522
523 Some(single)
524 }
525
526 /// Asserts that an [`ArgParser`] is a list and returns it, or emits an error and returns
527 /// `None`.
528 ///
529 /// Some examples:
530 ///
531 /// - `#[allow(clippy::complexity)]`: `(clippy::complexity)` is a list
532 /// - `#[rustfmt::skip::macros(target_macro_name)]`: `(target_macro_name)` is a list
533 ///
534 /// This is a higher-level (and harder to misuse) wrapper over [`ArgParser::as_list`] that
535 /// allows using `?` when the attribute parsing function allows it. You may still want to use
536 /// [`ArgParser::as_list`] for the following reasons:
537 ///
538 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
539 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
540 #[track_caller]
541 pub(crate) fn expect_list<'arg>(
542 &mut self,
543 args: &'arg ArgParser,
544 span: Span,
545 ) -> Option<&'arg MetaItemListParser> {
546 let list = args.as_list();
547 if list.is_none() {
548 self.adcx().expected_list(span, args);
549 }
550 list
551 }
552
553 /// Asserts that a [`MetaItemListParser`] contains a single element and returns it, or emits an
554 /// error and returns `None`.
555 ///
556 /// This is a higher-level (and harder to misuse) wrapper over [`MetaItemListParser::as_single`],
557 /// that allows using `?` to early return. You may still want to use
558 /// [`MetaItemListParser::as_single`] for the following reasons:
559 ///
560 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
561 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
562 #[track_caller]
563 pub(crate) fn expect_single<'arg>(
564 &mut self,
565 list: &'arg MetaItemListParser,
566 ) -> Option<&'arg MetaItemOrLitParser> {
567 let single = list.as_single();
568 if single.is_none() {
569 self.adcx().expected_single_argument(list.span, list.len());
570 }
571 single
572 }
573
574 /// Asserts that a node is a name-value pair.
575 ///
576 /// Some examples:
577 ///
578 /// - `#[clippy::cyclomatic_complexity = "100"]`: `clippy::cyclomatic_complexity = "100"` is a
579 /// name-value pair, where the name is a path (`clippy::cyclomatic_complexity`). You already
580 /// checked the path to get an `ArgParser`, so this method will effectively only assert that
581 /// the `= "100"` is there and returns it.
582 /// - `#[doc = "hello"]`: `doc = "hello` is also a name value pair. `= "hello"` is returned.
583 /// - `#[serde(rename_all = "lowercase")]`: `rename_all = "lowercase"` is a name value pair,
584 /// where the name is an identifier (`rename_all`) and the value is a literal (`"lowercase"`).
585 /// This returns both the path and the value.
586 ///
587 /// `arg` must be a reference to any node that may contain a name-value pair, that is:
588 ///
589 /// - [`MetaItemOrLitParser`],
590 /// - [`MetaItemParser`],
591 /// - [`ArgParser`].
592 ///
593 /// `name` can be set to `Some` for a nicer error message talking about the specific name that
594 /// was found lacking a value.
595 ///
596 /// This is a higher-level (and harder to misuse) wrapper over multiple `as_` methods in the
597 /// [`parser`][crate::parser] module. You may still want to use the lower-level methods for the
598 /// following reasons:
599 ///
600 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
601 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
602 #[track_caller]
603 pub(crate) fn expect_name_value<'arg, Arg>(
604 &mut self,
605 arg: &'arg Arg,
606 span: Span,
607 name: Option<Symbol>,
608 ) -> Option<Arg::Output<'arg>>
609 where
610 Arg: ExpectNameValue,
611 {
612 arg.expect_name_value(self, span, name)
613 }
614
615 /// Assert that an [`ArgParser`] has no args, or emits an error and return `None`.
616 ///
617 /// This is a higher-level (and harder to misuse) wrapper over multiple
618 /// [`ArgParser::as_no_args`]. You may still want to use the lower-level methods for the
619 /// following reasons:
620 ///
621 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
622 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
623 #[track_caller]
624 pub(crate) fn expect_no_args<'arg>(&mut self, arg: &'arg ArgParser) -> Option<()> {
625 if let Err(span) = arg.as_no_args() {
626 self.adcx().expected_no_args(span);
627 return None;
628 }
629
630 Some(())
631 }
632
633 /// Asserts that a node is a string literal, or emits an error and return `None`
634 ///
635 /// `arg` must be a reference to any node that may contain a name-value pair, that is:
636 ///
637 /// - [`NameValueParser`],
638 /// - [`MetaItemOrLitParser`],
639 ///
640 /// This is a higher-level (and harder to misuse) wrapper over multiple `as_` methods in the
641 /// [`parser`][crate::parser] module. You may still want to use the lower-level methods for the
642 /// following reasons:
643 ///
644 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
645 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
646 #[track_caller]
647 pub(crate) fn expect_string_literal<'arg, Arg>(&mut self, arg: &'arg Arg) -> Option<Symbol>
648 where
649 Arg: ExpectStringLiteral,
650 {
651 arg.expect_string_literal(self)
652 }
653}
654
655pub(crate) trait ExpectNameValue {
656 type Output<'a>
657 where
658 Self: 'a;
659
660 #[track_caller]
661 fn expect_name_value<'a, 'f, 'sess>(
662 &'a self,
663 cx: &mut AcceptContext<'f, 'sess>,
664 span: Span,
665 name: Option<Symbol>,
666 ) -> Option<Self::Output<'a>>;
667}
668
669impl ExpectNameValue for MetaItemOrLitParser {
670 type Output<'a> = (Ident, &'a NameValueParser);
671
672 #[track_caller]
673 fn expect_name_value<'a, 'f, 'sess>(
674 &'a self,
675 cx: &mut AcceptContext<'f, 'sess>,
676 span: Span,
677 name: Option<Symbol>,
678 ) -> Option<Self::Output<'a>> {
679 let Some(meta_item) = self.meta_item() else {
680 cx.adcx().expected_name_value(self.span(), name);
681 return None;
682 };
683
684 meta_item.expect_name_value(cx, span, name)
685 }
686}
687
688impl ExpectNameValue for MetaItemParser {
689 type Output<'a> = (Ident, &'a NameValueParser);
690
691 #[track_caller]
692 fn expect_name_value<'a, 'f, 'sess>(
693 &'a self,
694 cx: &mut AcceptContext<'f, 'sess>,
695 _span: Span, // Not needed: `MetaItemOrLitParser` carry its own span.
696 name: Option<Symbol>,
697 ) -> Option<Self::Output<'a>> {
698 let word = self.path().word();
699 let arg = self.args().as_name_value();
700
701 if word.is_none() {
702 cx.adcx().expected_identifier(self.path().span());
703 }
704
705 if arg.is_none() {
706 cx.adcx().expected_name_value(self.span(), name);
707 }
708
709 word.zip(arg)
710 }
711}
712
713impl ExpectNameValue for ArgParser {
714 type Output<'a> = &'a NameValueParser;
715
716 #[track_caller]
717 fn expect_name_value<'a, 'f, 'sess>(
718 &'a self,
719 cx: &mut AcceptContext<'f, 'sess>,
720 span: Span,
721 name: Option<Symbol>,
722 ) -> Option<Self::Output<'a>> {
723 let Some(nv) = self.as_name_value() else {
724 cx.adcx().expected_name_value(span, name);
725 return None;
726 };
727
728 Some(nv)
729 }
730}
731
732pub(crate) trait ExpectStringLiteral {
733 #[track_caller]
734 fn expect_string_literal<'f, 'sess>(&self, cx: &mut AcceptContext<'f, 'sess>)
735 -> Option<Symbol>;
736}
737
738impl ExpectStringLiteral for NameValueParser {
739 #[track_caller]
740 fn expect_string_literal<'f, 'sess>(
741 &self,
742 cx: &mut AcceptContext<'f, 'sess>,
743 ) -> Option<Symbol> {
744 let value = self.value_as_str();
745 if value.is_none() {
746 cx.adcx().expected_string_literal(self.value_span, Some(self.value_as_lit()));
747 }
748 value
749 }
750}
751
752impl ExpectStringLiteral for MetaItemOrLitParser {
753 #[track_caller]
754 fn expect_string_literal<'f, 'sess>(
755 &self,
756 cx: &mut AcceptContext<'f, 'sess>,
757 ) -> Option<Symbol> {
758 let Some(lit) = self.as_lit() else {
759 cx.adcx().expected_string_literal(self.span(), None);
760 return None;
761 };
762
763 let str = lit.value_as_str();
764
765 if str.is_none() {
766 cx.adcx().expected_string_literal(self.span(), Some(lit));
767 }
768
769 str
770 }
771}
772
773impl<'f, 'sess> Deref for AcceptContext<'f, 'sess> {
774 type Target = SharedContext<'f, 'sess>;
775
776 fn deref(&self) -> &Self::Target {
777 &self.shared
778 }
779}
780
781impl DerefMut for AcceptContext<'_, '_> {
782 fn deref_mut(&mut self) -> &mut Self::Target {
783 &mut self.shared
784 }
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 struct SharedContext<'p, 'sess> {
792 /// The parse context, gives access to the session and the
793 /// diagnostics context.
794 pub(crate) cx: &'p mut AttributeParser<'sess>,
795 /// The span of the syntactical component this attribute was applied to
796 pub(crate) target_span: Span,
797 pub(crate) target: Target,
798
799 pub(crate) emit_lint: &'p mut dyn FnMut(LintId, MultiSpan, EmitAttribute),
800
801 /// This atomic bool keeps track of whether any lint has been emitted.
802 /// This is used for the arguments-used check.
803 #[cfg(debug_assertions)]
804 pub(crate) has_lint_been_emitted: AtomicBool,
805}
806
807/// Context given to every attribute parser during finalization.
808///
809/// Gives [`AttributeParser`](crate::attributes::AttributeParser)s enough information to create
810/// errors, for example.
811pub(crate) struct FinalizeContext<'p, 'sess> {
812 pub(crate) shared: SharedContext<'p, 'sess>,
813
814 /// A list of all attribute on this syntax node.
815 ///
816 /// Useful for compatibility checks with other attributes in [`finalize`](crate::attributes::AttributeParser::finalize)
817 ///
818 /// Usually, you should use normal attribute parsing logic instead,
819 /// especially when making a *denylist* of other attributes.
820 pub(crate) all_attrs: &'p [RefPathParser<'p>],
821}
822
823impl<'p, 'sess: 'p> Deref for FinalizeContext<'p, 'sess> {
824 type Target = SharedContext<'p, 'sess>;
825
826 fn deref(&self) -> &Self::Target {
827 &self.shared
828 }
829}
830
831impl<'p, 'sess: 'p> DerefMut for FinalizeContext<'p, 'sess> {
832 fn deref_mut(&mut self) -> &mut Self::Target {
833 &mut self.shared
834 }
835}
836
837/// Context given to deferred cross-attribute checks (`finalize_check`).
838///
839/// These checks run *after* every attribute on an item has been finalized, so unlike
840/// [`FinalizeContext`] this context can also inspect the fully parsed attributes via
841/// [`parsed_attrs`](Self::parsed_attrs).
842pub(crate) struct FinalizeCheckContext<'p, 'sess> {
843 pub(crate) shared: SharedContext<'p, 'sess>,
844
845 /// A list of all attribute on this syntax node.
846 ///
847 /// Useful for compatibility checks with other attributes.
848 ///
849 /// Unlike [`parsed_attrs`](Self::parsed_attrs), this only contains the *paths* of the
850 /// attributes.
851 pub(crate) all_attrs: &'p [RefPathParser<'p>],
852
853 /// All attributes that have been parsed on this syntax node.
854 ///
855 /// Unlike [`all_attrs`](Self::all_attrs), this contains the fully parsed attributes.
856 pub(crate) parsed_attrs: &'p [Attribute],
857
858 /// The AST item these attributes were applied to, when the target is an item.
859 /// Used by `finalize_check` to inspect item structure that is not encoded in [`Target`].
860 pub(crate) target_item: Option<&'p rustc_ast::ast::Item>,
861}
862
863impl<'p, 'sess: 'p> Deref for FinalizeCheckContext<'p, 'sess> {
864 type Target = SharedContext<'p, 'sess>;
865
866 fn deref(&self) -> &Self::Target {
867 &self.shared
868 }
869}
870
871impl<'p, 'sess: 'p> DerefMut for FinalizeCheckContext<'p, 'sess> {
872 fn deref_mut(&mut self) -> &mut Self::Target {
873 &mut self.shared
874 }
875}
876
877impl<'p, 'sess: 'p> Deref for SharedContext<'p, 'sess> {
878 type Target = AttributeParser<'sess>;
879
880 fn deref(&self) -> &Self::Target {
881 self.cx
882 }
883}
884
885impl<'p, 'sess: 'p> DerefMut for SharedContext<'p, 'sess> {
886 fn deref_mut(&mut self) -> &mut Self::Target {
887 self.cx
888 }
889}
890
891#[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) -> Self {
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 {
Self::EarlyFatal { also_emit_lints: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"EarlyFatal", "also_emit_lints", &__self_0),
Self::ErrorsAndLints { recovery: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"ErrorsAndLints", "recovery", &__self_0),
Self::Nothing => ::core::fmt::Formatter::write_str(f, "Nothing"),
}
}
}Debug)]
892pub enum ShouldEmit {
893 /// The operations will emit errors, and lints, and errors are fatal.
894 ///
895 /// Only relevant when early parsing, in late parsing equivalent to `ErrorsAndLints`.
896 /// Late parsing is never fatal, and instead tries to emit as many diagnostics as possible.
897 EarlyFatal { also_emit_lints: bool },
898 /// The operation will emit errors and lints.
899 /// This is usually what you need.
900 ErrorsAndLints {
901 /// Whether [`ArgParser`] will attempt to recover from errors.
902 ///
903 /// Whether it is allowed to recover from bad input (like an invalid literal). Setting
904 /// this to `Forbidden` will instead return early, and not raise errors except at the top
905 /// level (in [`ArgParser::from_attr_args`]).
906 recovery: Recovery,
907 },
908 /// The operation will *not* emit errors and lints.
909 ///
910 /// The parser can still call `delay_bug`, so you *must* ensure that this operation will also be
911 /// called with `ShouldEmit::ErrorsAndLints`.
912 Nothing,
913}
914
915impl ShouldEmit {
916 #[track_caller]
917 pub(crate) fn emit_err(self, diag: Diag<'_>) -> ErrorGuaranteed {
918 match self {
919 ShouldEmit::EarlyFatal { .. } if diag.level() == Level::DelayedBug => diag.emit_err(),
920 ShouldEmit::EarlyFatal { .. } => diag.upgrade_to_fatal().emit_fatal(),
921 ShouldEmit::ErrorsAndLints { .. } => diag.emit_err(),
922 ShouldEmit::Nothing => diag.delay_as_bug(),
923 }
924 }
925}
926
927/// The interface for issuing argument parsing related diagnostics.
928///
929/// It can be obtained through the [`adcx`](AcceptContext::adcx) method on [`AcceptContext`].
930pub(crate) struct AttributeDiagnosticContext<'a, 'f, 'sess> {
931 ctx: &'a mut AcceptContext<'f, 'sess>,
932 custom_suggestions: Vec<Suggestion>,
933}
934
935impl<'a, 'f, 'sess: 'f> AttributeDiagnosticContext<'a, 'f, 'sess> {
936 #[track_caller]
937 fn emit_parse_error(
938 &mut self,
939 mut span: Span,
940 reason: AttributeParseErrorReason<'_>,
941 ) -> ErrorGuaranteed {
942 let suggestions = if self.custom_suggestions.is_empty() {
943 AttributeParseErrorSuggestions::CreatedByTemplate(self.suggestions())
944 } else {
945 AttributeParseErrorSuggestions::CreatedByParser(mem::take(&mut self.custom_suggestions))
946 };
947
948 // If the span is the full attribute (including the `#[`/`]` delimiters) shrink it to
949 // exclude those delimiters, because that's what we want in error messages.
950 if span == self.attr_span {
951 span = self.inner_span;
952 }
953
954 self.emit_err(AttributeParseError {
955 span,
956 inner_span: self.inner_span,
957 template: *self.template,
958 path: self.attr_path.clone(),
959 description: self.parsed_description,
960 reason,
961 suggestions,
962 })
963 }
964
965 /// Adds a custom suggestion to the diagnostic. This also prevents the default (template-based)
966 /// suggestion to be emitted.
967 pub(crate) fn push_suggestion(&mut self, msg: String, span: Span, code: String) -> &mut Self {
968 self.custom_suggestions.push(Suggestion { msg, sp: span, code });
969 self
970 }
971}
972
973/// Helpers that can be used to generate errors during attribute parsing.
974impl<'a, 'f, 'sess: 'f> AttributeDiagnosticContext<'a, 'f, 'sess> {
975 #[track_caller]
976 pub(crate) fn expected_integer_literal_in_range(
977 &mut self,
978 span: Span,
979 lower_bound: isize,
980 upper_bound: isize,
981 ) -> ErrorGuaranteed {
982 self.emit_parse_error(
983 span,
984 AttributeParseErrorReason::ExpectedIntegerLiteralInRange { lower_bound, upper_bound },
985 )
986 }
987
988 /// The provided span is used as a fallback in case `args` does not contain any. It should be
989 /// the span of the node that contains `args`.
990 #[track_caller]
991 pub(crate) fn expected_list(&mut self, span: Span, args: &ArgParser) -> ErrorGuaranteed {
992 let span = match args {
993 ArgParser::NoArgs => span,
994 ArgParser::List(list) => list.span,
995 ArgParser::NameValue(nv) => nv.args_span(),
996 };
997 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedList)
998 }
999
1000 #[track_caller]
1001 pub(crate) fn expected_list_with_num_args_or_more(
1002 &mut self,
1003 args: usize,
1004 span: Span,
1005 ) -> ErrorGuaranteed {
1006 self.emit_parse_error(
1007 span,
1008 AttributeParseErrorReason::ExpectedListWithNumArgsOrMore { args },
1009 )
1010 }
1011
1012 #[track_caller]
1013 pub(crate) fn expected_list_or_no_args(&mut self, span: Span) -> ErrorGuaranteed {
1014 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedListOrNoArgs)
1015 }
1016
1017 #[track_caller]
1018 pub(crate) fn expected_nv_or_no_args(&mut self, span: Span) -> ErrorGuaranteed {
1019 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNameValueOrNoArgs)
1020 }
1021
1022 #[track_caller]
1023 pub(crate) fn expected_non_empty_string_literal(&mut self, span: Span) -> ErrorGuaranteed {
1024 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNonEmptyStringLiteral)
1025 }
1026
1027 #[track_caller]
1028 pub(crate) fn expected_no_args(&mut self, span: Span) -> ErrorGuaranteed {
1029 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNoArgs)
1030 }
1031
1032 /// Emit an error that a `name` was expected here
1033 #[track_caller]
1034 pub(crate) fn expected_identifier(&mut self, span: Span) -> ErrorGuaranteed {
1035 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedIdentifier)
1036 }
1037
1038 /// Emit an error that a `name = value` pair was expected at this span. The symbol can be given for
1039 /// a nicer error message talking about the specific name that was found lacking a value.
1040 #[track_caller]
1041 fn expected_name_value(&mut self, span: Span, name: Option<Symbol>) -> ErrorGuaranteed {
1042 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNameValue(name))
1043 }
1044
1045 /// Emit an error that a `name = value` argument is missing in a list of name-value pairs.
1046 #[track_caller]
1047 pub(crate) fn missing_name_value(&mut self, span: Span, name: Symbol) -> ErrorGuaranteed {
1048 self.emit_parse_error(span, AttributeParseErrorReason::MissingNameValue(name))
1049 }
1050
1051 /// Emit an error that a `name = value` pair was found where that name was already seen.
1052 #[track_caller]
1053 pub(crate) fn duplicate_key(&mut self, span: Span, key: Symbol) -> ErrorGuaranteed {
1054 self.emit_parse_error(span, AttributeParseErrorReason::DuplicateKey(key))
1055 }
1056
1057 /// An error that should be emitted when a [`MetaItemOrLitParser`]
1058 /// was expected *not* to be a literal, but instead a meta item.
1059 #[track_caller]
1060 pub(crate) fn expected_not_literal(&mut self, span: Span) -> ErrorGuaranteed {
1061 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNotLiteral)
1062 }
1063
1064 /// Signals that we expected exactly one argument and that we got either zero or two or more.
1065 /// The `provided_arguments` argument allows distinguishing between "expected an argument here"
1066 /// (when zero arguments are provided) and "expect a single argument here" (when two or more
1067 /// arguments are provided).
1068 #[track_caller]
1069 pub(crate) fn expected_single_argument(
1070 &mut self,
1071 span: Span,
1072 provided_arguments: usize,
1073 ) -> ErrorGuaranteed {
1074 let reason = if provided_arguments == 0 {
1075 AttributeParseErrorReason::ExpectedArgument
1076 } else {
1077 AttributeParseErrorReason::ExpectedSingleArgument
1078 };
1079
1080 self.emit_parse_error(span, reason)
1081 }
1082
1083 #[track_caller]
1084 pub(crate) fn expected_at_least_one_argument(&mut self, span: Span) -> ErrorGuaranteed {
1085 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedAtLeastOneArgument)
1086 }
1087
1088 /// Produces an error along the lines of `expected one of [foo, meow]`
1089 #[track_caller]
1090 pub(crate) fn expected_specific_argument(
1091 &mut self,
1092 span: Span,
1093 possibilities: &[Symbol],
1094 ) -> ErrorGuaranteed {
1095 self.emit_parse_error(
1096 span,
1097 AttributeParseErrorReason::ExpectedSpecificArgument {
1098 possibilities,
1099 strings: false,
1100 list: false,
1101 },
1102 )
1103 }
1104
1105 /// Produces an error along the lines of `expected one of [foo, meow] as an argument`.
1106 /// i.e. slightly different wording to [`expected_specific_argument`](Self::expected_specific_argument).
1107 #[track_caller]
1108 pub(crate) fn expected_specific_argument_and_list(
1109 &mut self,
1110 span: Span,
1111 possibilities: &[Symbol],
1112 ) -> ErrorGuaranteed {
1113 self.emit_parse_error(
1114 span,
1115 AttributeParseErrorReason::ExpectedSpecificArgument {
1116 possibilities,
1117 strings: false,
1118 list: true,
1119 },
1120 )
1121 }
1122
1123 /// produces an error along the lines of `expected one of ["foo", "meow"]`
1124 #[track_caller]
1125 pub(crate) fn expected_specific_argument_strings(
1126 &mut self,
1127 span: Span,
1128 possibilities: &[Symbol],
1129 ) -> ErrorGuaranteed {
1130 self.emit_parse_error(
1131 span,
1132 AttributeParseErrorReason::ExpectedSpecificArgument {
1133 possibilities,
1134 strings: true,
1135 list: false,
1136 },
1137 )
1138 }
1139
1140 pub(crate) fn warn_empty_attribute(&mut self, span: Span) {
1141 let attr_path = self.attr_path.to_string();
1142 let valid_without_list = self.template.word;
1143 self.emit_lint(
1144 UNUSED_ATTRIBUTES,
1145 crate::diagnostics::EmptyAttributeList {
1146 attr_span: span,
1147 attr_path,
1148 valid_without_list,
1149 },
1150 span,
1151 );
1152 }
1153
1154 pub(crate) fn warn_ill_formed_attribute_input(&mut self, lint: &'static Lint) {
1155 self.warn_ill_formed_attribute_input_with_help(lint, None)
1156 }
1157 pub(crate) fn warn_ill_formed_attribute_input_with_help(
1158 &mut self,
1159 lint: &'static Lint,
1160 help: Option<String>,
1161 ) {
1162 let suggestions = self.suggestions();
1163 let span = self.inner_span;
1164 self.emit_lint(
1165 lint,
1166 crate::diagnostics::IllFormedAttributeInput::new(&suggestions, None, help.as_deref()),
1167 span,
1168 );
1169 }
1170
1171 pub(crate) fn suggestions(&self) -> Vec<String> {
1172 self.template.suggestions(self.parsed_description, self.attr_safety, &self.attr_path)
1173 }
1174 /// Error that a string literal was expected.
1175 /// You can optionally give the literal you did find (which you found not to be a string literal)
1176 /// which can make better errors. For example, if the literal was a byte string it will suggest
1177 /// removing the `b` prefix.
1178 pub(crate) fn expected_string_literal(
1179 &mut self,
1180 span: Span,
1181 actual_literal: Option<&MetaItemLit>,
1182 ) -> ErrorGuaranteed {
1183 self.emit_parse_error(
1184 span,
1185 AttributeParseErrorReason::ExpectedStringLiteral {
1186 byte_string: actual_literal.and_then(|i| {
1187 i.kind.is_bytestr().then(|| self.sess().source_map().start_point(i.span))
1188 }),
1189 },
1190 )
1191 }
1192
1193 /// Error that a filename string literal was expected.
1194 pub(crate) fn expected_filename_literal(&mut self, span: Span) {
1195 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedFilenameLiteral);
1196 }
1197
1198 pub(crate) fn expected_integer_literal(&mut self, span: Span) -> ErrorGuaranteed {
1199 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedIntegerLiteral)
1200 }
1201}
1202
1203impl<'f, 'sess: 'f> Deref for AttributeDiagnosticContext<'_, 'f, 'sess> {
1204 type Target = AcceptContext<'f, 'sess>;
1205
1206 fn deref(&self) -> &Self::Target {
1207 self.ctx
1208 }
1209}
1210
1211impl<'f, 'sess: 'f> DerefMut for AttributeDiagnosticContext<'_, 'f, 'sess> {
1212 fn deref_mut(&mut self) -> &mut Self::Target {
1213 self.ctx
1214 }
1215}
1216
1217/// Represents a custom suggestion that an attribute parser can emit.
1218pub(crate) struct Suggestion {
1219 pub(crate) msg: String,
1220 pub(crate) sp: Span,
1221 pub(crate) code: String,
1222}