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