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_data_structures::sync::{DynSend, DynSync};
13use rustc_errors::{Diag, DiagCtxtHandle, Diagnostic, Level, MultiSpan};
14use rustc_feature::AttributeStability;
15use rustc_hir::attrs::AttributeKind;
16use rustc_hir::{AttrPath, Attribute};
17use rustc_parse::parser::Recovery;
18use rustc_session::Session;
19use rustc_session::lint::{Lint, LintId};
20use rustc_span::{ErrorGuaranteed, Ident, Span, Symbol};
21
22// Glob imports to avoid big, bitrotty import lists
23use crate::attributes::allow_unstable::*;
24use crate::attributes::autodiff::*;
25use crate::attributes::body::*;
26use crate::attributes::cfi_encoding::*;
27use crate::attributes::codegen_attrs::*;
28use crate::attributes::confusables::*;
29use crate::attributes::crate_level::*;
30use crate::attributes::debugger::*;
31use crate::attributes::deprecation::*;
32use crate::attributes::diagnostic::do_not_recommend::*;
33use crate::attributes::diagnostic::on_const::*;
34use crate::attributes::diagnostic::on_move::*;
35use crate::attributes::diagnostic::on_type_error::*;
36use crate::attributes::diagnostic::on_unimplemented::*;
37use crate::attributes::diagnostic::on_unknown::*;
38use crate::attributes::diagnostic::on_unmatched_args::*;
39use crate::attributes::diagnostic::opaque::*;
40use crate::attributes::doc::*;
41use crate::attributes::dummy::*;
42use crate::attributes::inline::*;
43use crate::attributes::instruction_set::*;
44use crate::attributes::link_attrs::*;
45use crate::attributes::lint_helpers::*;
46use crate::attributes::loop_match::*;
47use crate::attributes::macro_attrs::*;
48use crate::attributes::must_not_suspend::*;
49use crate::attributes::must_use::*;
50use crate::attributes::no_implicit_prelude::*;
51use crate::attributes::no_link::*;
52use crate::attributes::non_exhaustive::*;
53use crate::attributes::path::PathParser as PathAttributeParser;
54use crate::attributes::pin_v2::*;
55use crate::attributes::proc_macro_attrs::*;
56use crate::attributes::prototype::*;
57use crate::attributes::repr::*;
58use crate::attributes::rustc_allocator::*;
59use crate::attributes::rustc_dump::*;
60use crate::attributes::rustc_internal::*;
61use crate::attributes::semantics::{ComptimeParser, *};
62use crate::attributes::splat::*;
63use crate::attributes::stability::*;
64use crate::attributes::test_attrs::*;
65use crate::attributes::traits::*;
66use crate::attributes::transparency::*;
67use crate::attributes::unroll::*;
68use crate::attributes::{AttributeParser as _, AttributeSafety, Combine, Single, WithoutArgs};
69use crate::parser::{
70 ArgParser, MetaItemListParser, MetaItemOrLitParser, MetaItemParser, NameValueParser,
71 RefPathParser,
72};
73use crate::session_diagnostics::{
74 AttributeParseError, AttributeParseErrorReason, AttributeParseErrorSuggestions,
75 ParsedDescription, UnusedDuplicate,
76};
77use crate::target_checking::AllowedTargets;
78use crate::{AttributeParser, AttributeTemplate, EmitAttribute};
79
80type GroupType = LazyLock<GroupTypeInner>;
81
82pub(super) struct GroupTypeInner {
83 pub(super) accepters: BTreeMap<&'static [Symbol], GroupTypeInnerAccept>,
84}
85
86pub(super) struct GroupTypeInnerAccept {
87 pub(super) template: AttributeTemplate,
88 pub(super) accept_fn: AcceptFn,
89 pub(super) allowed_targets: AllowedTargets<'static>,
90 pub(super) safety: AttributeSafety,
91 pub(super) stability: AttributeStability,
92 pub(super) finalizer: FinalizeFn,
93}
94
95pub(crate) type AcceptFn =
96 Box<dyn for<'sess> Fn(&mut AcceptContext<'_, 'sess>, &ArgParser) + Send + Sync>;
97
98pub(crate) type FinalizeFn = fn(&mut FinalizeContext<'_, '_>) -> FinalizeOutput;
99
100/// A cross-attribute check that runs *after* all attributes on an item have been
101/// finalized, so it can inspect the fully parsed attributes via
102/// [`FinalizeCheckContext::parsed_attrs`]. The [`Span`] is the span of the attribute the
103/// check is associated with, used for diagnostics.
104pub(crate) type FinalizeCheckFn = fn(&FinalizeCheckContext<'_, '_>, Span);
105
106/// The result of finalizing a single attribute parser.
107pub(crate) struct FinalizeOutput {
108 /// The attribute the parser produced, if any.
109 pub(crate) attr: Option<AttributeKind>,
110 /// A check to run once *all* attributes on the item have been finalized, together
111 /// with the span it should be reported at. Deferred so that it can inspect the fully
112 /// parsed attributes via [`FinalizeCheckContext::parsed_attrs`].
113 pub(crate) deferred_check: Option<(FinalizeCheckFn, Span)>,
114}
115
116macro_rules! attribute_parsers {
117 (
118 pub(crate) static $name: ident = [$($names: ty),* $(,)?];
119 ) => {
120 pub(crate) static $name: GroupType = LazyLock::new(|| {
121 let mut accepters = BTreeMap::<_, GroupTypeInnerAccept>::new();
122 $(
123 {
124 thread_local! {
125 static STATE_OBJECT: RefCell<$names> = RefCell::new(<$names>::default());
126 };
127
128 for (path, template, stability, accept_fn) in <$names>::ATTRIBUTES {
129 match accepters.entry(*path) {
130 Entry::Vacant(e) => {
131 e.insert(GroupTypeInnerAccept {
132 template: *template,
133 accept_fn: Box::new(|cx, args| {
134 STATE_OBJECT.with_borrow_mut(|s| {
135 accept_fn(s, cx, args)
136 })
137 }),
138 safety: <$names as crate::attributes::AttributeParser>::SAFETY,
139 stability: *stability,
140 allowed_targets: <$names as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
141 finalizer: |cx| {
142 let state = STATE_OBJECT.take();
143 // Compute the deferred check (if any) before consuming
144 // the state in `finalize`.
145 let deferred_check = state.deferred_finalize_check();
146 let attr = state.finalize(cx);
147 FinalizeOutput { attr, deferred_check }
148 }
149 });
150 }
151 Entry::Occupied(_) => panic!("Attribute {path:?} has multiple accepters"),
152 }
153 }
154 }
155 )*
156
157 GroupTypeInner { accepters }
158 });
159 };
160}
161pub(crate) static ATTRIBUTE_PARSERS: GroupType =
LazyLock::new(||
{
let mut accepters =
BTreeMap::<_, GroupTypeInnerAccept>::new();
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<BodyStabilityParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<BodyStabilityParser> {
RefCell::new(<BodyStabilityParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<BodyStabilityParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<BodyStabilityParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<BodyStabilityParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<BodyStabilityParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <BodyStabilityParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <BodyStabilityParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<ConfusablesParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<ConfusablesParser> {
RefCell::new(<ConfusablesParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<ConfusablesParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<ConfusablesParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<ConfusablesParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<ConfusablesParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <ConfusablesParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <ConfusablesParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<ConstStabilityParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<ConstStabilityParser> {
RefCell::new(<ConstStabilityParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<ConstStabilityParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<ConstStabilityParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<ConstStabilityParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<ConstStabilityParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <ConstStabilityParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <ConstStabilityParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<DocParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<DocParser> {
RefCell::new(<DocParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<DocParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<DocParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<DocParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<DocParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <DocParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <DocParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<MacroUseParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<MacroUseParser> {
RefCell::new(<MacroUseParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<MacroUseParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<MacroUseParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<MacroUseParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<MacroUseParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <MacroUseParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <MacroUseParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<NakedParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<NakedParser> {
RefCell::new(<NakedParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<NakedParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<NakedParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<NakedParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<NakedParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <NakedParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <NakedParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnConstParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<OnConstParser> {
RefCell::new(<OnConstParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnConstParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnConstParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnConstParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnConstParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnConstParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnConstParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnMoveParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<OnMoveParser> {
RefCell::new(<OnMoveParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnMoveParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnMoveParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnMoveParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnMoveParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnMoveParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnMoveParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnTypeErrorParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<OnTypeErrorParser> {
RefCell::new(<OnTypeErrorParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnTypeErrorParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnTypeErrorParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnTypeErrorParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnTypeErrorParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnTypeErrorParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnTypeErrorParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnUnimplementedParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<OnUnimplementedParser> {
RefCell::new(<OnUnimplementedParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnUnimplementedParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnimplementedParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnimplementedParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnUnimplementedParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnUnimplementedParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnUnimplementedParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnUnknownParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<OnUnknownParser> {
RefCell::new(<OnUnknownParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnUnknownParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnknownParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnknownParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnUnknownParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnUnknownParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnUnknownParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OnUnmatchedArgsParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<OnUnmatchedArgsParser> {
RefCell::new(<OnUnmatchedArgsParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OnUnmatchedArgsParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnmatchedArgsParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OnUnmatchedArgsParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OnUnmatchedArgsParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OnUnmatchedArgsParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OnUnmatchedArgsParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<OpaqueParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<OpaqueParser> {
RefCell::new(<OpaqueParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<OpaqueParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OpaqueParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<OpaqueParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<OpaqueParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <OpaqueParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <OpaqueParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<RegisterToolParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<RegisterToolParser> {
RefCell::new(<RegisterToolParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<RegisterToolParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RegisterToolParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RegisterToolParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<RegisterToolParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <RegisterToolParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <RegisterToolParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<RustcAlignParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<RustcAlignParser> {
RefCell::new(<RustcAlignParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<RustcAlignParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcAlignParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcAlignParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<RustcAlignParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <RustcAlignParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <RustcAlignParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<RustcAlignStaticParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<RustcAlignStaticParser> {
RefCell::new(<RustcAlignStaticParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<RustcAlignStaticParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcAlignStaticParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcAlignStaticParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<RustcAlignStaticParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <RustcAlignStaticParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <RustcAlignStaticParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<RustcCguTestAttributeParser>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<RustcCguTestAttributeParser> {
RefCell::new(<RustcCguTestAttributeParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<RustcCguTestAttributeParser>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcCguTestAttributeParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<RustcCguTestAttributeParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<RustcCguTestAttributeParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <RustcCguTestAttributeParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <RustcCguTestAttributeParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<StabilityParser>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<StabilityParser> {
RefCell::new(<StabilityParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<StabilityParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<StabilityParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<StabilityParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<StabilityParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <StabilityParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <StabilityParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<UsedParser>> =
{
#[inline]
fn __rust_std_internal_init_fn() -> RefCell<UsedParser> {
RefCell::new(<UsedParser>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<UsedParser>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<UsedParser>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<UsedParser>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<UsedParser>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <UsedParser as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <UsedParser as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<AllowInternalUnstableParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<AllowInternalUnstableParser>> {
RefCell::new(<Combine<AllowInternalUnstableParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<AllowInternalUnstableParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<AllowInternalUnstableParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<AllowInternalUnstableParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<AllowInternalUnstableParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<AllowInternalUnstableParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<AllowInternalUnstableParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<CrateTypeParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<CrateTypeParser>> {
RefCell::new(<Combine<CrateTypeParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<CrateTypeParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<CrateTypeParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<CrateTypeParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<CrateTypeParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<CrateTypeParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<CrateTypeParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<DebuggerVisualizerParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<DebuggerVisualizerParser>> {
RefCell::new(<Combine<DebuggerVisualizerParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<DebuggerVisualizerParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<DebuggerVisualizerParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<DebuggerVisualizerParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<DebuggerVisualizerParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<DebuggerVisualizerParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<DebuggerVisualizerParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<FeatureParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<FeatureParser>> {
RefCell::new(<Combine<FeatureParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<FeatureParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<FeatureParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<FeatureParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<FeatureParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<FeatureParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<FeatureParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<ForceTargetFeatureParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<ForceTargetFeatureParser>> {
RefCell::new(<Combine<ForceTargetFeatureParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<ForceTargetFeatureParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<ForceTargetFeatureParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<ForceTargetFeatureParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<ForceTargetFeatureParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<ForceTargetFeatureParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<ForceTargetFeatureParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<LinkParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<LinkParser>> {
RefCell::new(<Combine<LinkParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<LinkParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<LinkParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<LinkParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<LinkParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<LinkParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<LinkParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<ReprParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<ReprParser>> {
RefCell::new(<Combine<ReprParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<ReprParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<ReprParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<ReprParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<ReprParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<ReprParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<ReprParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<RustcAllowConstFnUnstableParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<RustcAllowConstFnUnstableParser>> {
RefCell::new(<Combine<RustcAllowConstFnUnstableParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<RustcAllowConstFnUnstableParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcAllowConstFnUnstableParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcAllowConstFnUnstableParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<RustcAllowConstFnUnstableParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<RustcAllowConstFnUnstableParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<RustcAllowConstFnUnstableParser>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<RustcCleanParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<RustcCleanParser>> {
RefCell::new(<Combine<RustcCleanParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<RustcCleanParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcCleanParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcCleanParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<RustcCleanParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<RustcCleanParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<RustcCleanParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<RustcDumpLayoutParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<RustcDumpLayoutParser>> {
RefCell::new(<Combine<RustcDumpLayoutParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<RustcDumpLayoutParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcDumpLayoutParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcDumpLayoutParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<RustcDumpLayoutParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<RustcDumpLayoutParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<RustcDumpLayoutParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<RustcMirParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<RustcMirParser>> {
RefCell::new(<Combine<RustcMirParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<RustcMirParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcMirParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcMirParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<RustcMirParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<RustcMirParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<RustcMirParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<RustcThenThisWouldNeedParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<RustcThenThisWouldNeedParser>> {
RefCell::new(<Combine<RustcThenThisWouldNeedParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<RustcThenThisWouldNeedParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcThenThisWouldNeedParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<RustcThenThisWouldNeedParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<RustcThenThisWouldNeedParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<RustcThenThisWouldNeedParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<RustcThenThisWouldNeedParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<TargetFeatureParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<TargetFeatureParser>> {
RefCell::new(<Combine<TargetFeatureParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<TargetFeatureParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<TargetFeatureParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<TargetFeatureParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<TargetFeatureParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<TargetFeatureParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<TargetFeatureParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<UnstableFeatureBoundParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<UnstableFeatureBoundParser>> {
RefCell::new(<Combine<UnstableFeatureBoundParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<UnstableFeatureBoundParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<UnstableFeatureBoundParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<UnstableFeatureBoundParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<UnstableFeatureBoundParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<UnstableFeatureBoundParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<UnstableFeatureBoundParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Combine<UnstableRemovedParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Combine<UnstableRemovedParser>> {
RefCell::new(<Combine<UnstableRemovedParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Combine<UnstableRemovedParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<UnstableRemovedParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Combine<UnstableRemovedParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Combine<UnstableRemovedParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Combine<UnstableRemovedParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Combine<UnstableRemovedParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<CfiEncodingParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<CfiEncodingParser>> {
RefCell::new(<Single<CfiEncodingParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<CfiEncodingParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CfiEncodingParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CfiEncodingParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<CfiEncodingParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<CfiEncodingParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<CfiEncodingParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<CollapseDebugInfoParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<CollapseDebugInfoParser>> {
RefCell::new(<Single<CollapseDebugInfoParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<CollapseDebugInfoParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CollapseDebugInfoParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CollapseDebugInfoParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<CollapseDebugInfoParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<CollapseDebugInfoParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<CollapseDebugInfoParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<CoverageParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<CoverageParser>> {
RefCell::new(<Single<CoverageParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<CoverageParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CoverageParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CoverageParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<CoverageParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<CoverageParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<CoverageParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<CrateNameParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<CrateNameParser>> {
RefCell::new(<Single<CrateNameParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<CrateNameParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CrateNameParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CrateNameParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<CrateNameParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<CrateNameParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<CrateNameParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<CustomMirParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<CustomMirParser>> {
RefCell::new(<Single<CustomMirParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<CustomMirParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CustomMirParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<CustomMirParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<CustomMirParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<CustomMirParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<CustomMirParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<DeprecatedParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<DeprecatedParser>> {
RefCell::new(<Single<DeprecatedParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<DeprecatedParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<DeprecatedParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<DeprecatedParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<DeprecatedParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<DeprecatedParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<DeprecatedParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<DoNotRecommendParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<DoNotRecommendParser>> {
RefCell::new(<Single<DoNotRecommendParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<DoNotRecommendParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<DoNotRecommendParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<DoNotRecommendParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<DoNotRecommendParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<DoNotRecommendParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<DoNotRecommendParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<ExportNameParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<ExportNameParser>> {
RefCell::new(<Single<ExportNameParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<ExportNameParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ExportNameParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ExportNameParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<ExportNameParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<ExportNameParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<ExportNameParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<IgnoreParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<IgnoreParser>> {
RefCell::new(<Single<IgnoreParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<IgnoreParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<IgnoreParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<IgnoreParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<IgnoreParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<IgnoreParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<IgnoreParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<InlineParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<InlineParser>> {
RefCell::new(<Single<InlineParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<InlineParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InlineParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InlineParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<InlineParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<InlineParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<InlineParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<InstructionSetParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<InstructionSetParser>> {
RefCell::new(<Single<InstructionSetParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<InstructionSetParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InstructionSetParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InstructionSetParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<InstructionSetParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<InstructionSetParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<InstructionSetParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<InstrumentFnParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<InstrumentFnParser>> {
RefCell::new(<Single<InstrumentFnParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<InstrumentFnParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InstrumentFnParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<InstrumentFnParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<InstrumentFnParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<InstrumentFnParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<InstrumentFnParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<LangParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<LangParser>> {
RefCell::new(<Single<LangParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<LangParser>>>() {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LangParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LangParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<LangParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<LangParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<LangParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<LinkNameParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<LinkNameParser>> {
RefCell::new(<Single<LinkNameParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<LinkNameParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkNameParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkNameParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<LinkNameParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<LinkNameParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<LinkNameParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<LinkOrdinalParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<LinkOrdinalParser>> {
RefCell::new(<Single<LinkOrdinalParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<LinkOrdinalParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkOrdinalParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkOrdinalParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<LinkOrdinalParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<LinkOrdinalParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<LinkOrdinalParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<LinkSectionParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<LinkSectionParser>> {
RefCell::new(<Single<LinkSectionParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<LinkSectionParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkSectionParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkSectionParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<LinkSectionParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<LinkSectionParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<LinkSectionParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<LinkageParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<LinkageParser>> {
RefCell::new(<Single<LinkageParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<LinkageParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkageParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<LinkageParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<LinkageParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<LinkageParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<LinkageParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<MacroExportParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<MacroExportParser>> {
RefCell::new(<Single<MacroExportParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<MacroExportParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MacroExportParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MacroExportParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<MacroExportParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<MacroExportParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<MacroExportParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<MoveSizeLimitParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<MoveSizeLimitParser>> {
RefCell::new(<Single<MoveSizeLimitParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<MoveSizeLimitParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MoveSizeLimitParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MoveSizeLimitParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<MoveSizeLimitParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<MoveSizeLimitParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<MoveSizeLimitParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<MustNotSuspendParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<MustNotSuspendParser>> {
RefCell::new(<Single<MustNotSuspendParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<MustNotSuspendParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MustNotSuspendParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MustNotSuspendParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<MustNotSuspendParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<MustNotSuspendParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<MustNotSuspendParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<MustUseParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<MustUseParser>> {
RefCell::new(<Single<MustUseParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<MustUseParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MustUseParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<MustUseParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<MustUseParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<MustUseParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<MustUseParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<OptimizeParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<OptimizeParser>> {
RefCell::new(<Single<OptimizeParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<OptimizeParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<OptimizeParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<OptimizeParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<OptimizeParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<OptimizeParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<OptimizeParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<PatchableFunctionEntryParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<PatchableFunctionEntryParser>> {
RefCell::new(<Single<PatchableFunctionEntryParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<PatchableFunctionEntryParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PatchableFunctionEntryParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PatchableFunctionEntryParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<PatchableFunctionEntryParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<PatchableFunctionEntryParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<PatchableFunctionEntryParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<PathAttributeParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<PathAttributeParser>> {
RefCell::new(<Single<PathAttributeParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<PathAttributeParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PathAttributeParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PathAttributeParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<PathAttributeParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<PathAttributeParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<PathAttributeParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<PatternComplexityLimitParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<PatternComplexityLimitParser>> {
RefCell::new(<Single<PatternComplexityLimitParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<PatternComplexityLimitParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PatternComplexityLimitParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<PatternComplexityLimitParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<PatternComplexityLimitParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<PatternComplexityLimitParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<PatternComplexityLimitParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<ProcMacroDeriveParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<ProcMacroDeriveParser>> {
RefCell::new(<Single<ProcMacroDeriveParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<ProcMacroDeriveParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ProcMacroDeriveParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ProcMacroDeriveParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<ProcMacroDeriveParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<ProcMacroDeriveParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<ProcMacroDeriveParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RecursionLimitParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RecursionLimitParser>> {
RefCell::new(<Single<RecursionLimitParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RecursionLimitParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RecursionLimitParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RecursionLimitParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RecursionLimitParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RecursionLimitParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RecursionLimitParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<ReexportTestHarnessMainParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<ReexportTestHarnessMainParser>> {
RefCell::new(<Single<ReexportTestHarnessMainParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<ReexportTestHarnessMainParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ReexportTestHarnessMainParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ReexportTestHarnessMainParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<ReexportTestHarnessMainParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<ReexportTestHarnessMainParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<ReexportTestHarnessMainParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcAbiParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcAbiParser>> {
RefCell::new(<Single<RustcAbiParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcAbiParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAbiParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAbiParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcAbiParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcAbiParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcAbiParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcAllocatorZeroedVariantParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcAllocatorZeroedVariantParser>> {
RefCell::new(<Single<RustcAllocatorZeroedVariantParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcAllocatorZeroedVariantParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAllocatorZeroedVariantParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAllocatorZeroedVariantParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcAllocatorZeroedVariantParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcAllocatorZeroedVariantParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcAllocatorZeroedVariantParser>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcAutodiffParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcAutodiffParser>> {
RefCell::new(<Single<RustcAutodiffParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcAutodiffParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAutodiffParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcAutodiffParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcAutodiffParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcAutodiffParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcAutodiffParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcBuiltinMacroParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcBuiltinMacroParser>> {
RefCell::new(<Single<RustcBuiltinMacroParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcBuiltinMacroParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcBuiltinMacroParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcBuiltinMacroParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcBuiltinMacroParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcBuiltinMacroParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcBuiltinMacroParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDeprecatedSafe2024Parser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDeprecatedSafe2024Parser>> {
RefCell::new(<Single<RustcDeprecatedSafe2024Parser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDeprecatedSafe2024Parser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDeprecatedSafe2024Parser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDeprecatedSafe2024Parser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDeprecatedSafe2024Parser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDeprecatedSafe2024Parser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDeprecatedSafe2024Parser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDiagnosticItemParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDiagnosticItemParser>> {
RefCell::new(<Single<RustcDiagnosticItemParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDiagnosticItemParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDiagnosticItemParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDiagnosticItemParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDiagnosticItemParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDiagnosticItemParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDiagnosticItemParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDocPrimitiveParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDocPrimitiveParser>> {
RefCell::new(<Single<RustcDocPrimitiveParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDocPrimitiveParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDocPrimitiveParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDocPrimitiveParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDocPrimitiveParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDocPrimitiveParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDocPrimitiveParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDummyParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDummyParser>> {
RefCell::new(<Single<RustcDummyParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDummyParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDummyParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDummyParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDummyParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDummyParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDummyParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDumpDefPathParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDumpDefPathParser>> {
RefCell::new(<Single<RustcDumpDefPathParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDumpDefPathParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDumpDefPathParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDumpDefPathParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDumpDefPathParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDumpDefPathParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDumpDefPathParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcDumpSymbolNameParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcDumpSymbolNameParser>> {
RefCell::new(<Single<RustcDumpSymbolNameParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcDumpSymbolNameParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDumpSymbolNameParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcDumpSymbolNameParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcDumpSymbolNameParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcDumpSymbolNameParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcDumpSymbolNameParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcForceInlineParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcForceInlineParser>> {
RefCell::new(<Single<RustcForceInlineParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcForceInlineParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcForceInlineParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcForceInlineParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcForceInlineParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcForceInlineParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcForceInlineParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcIfThisChangedParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcIfThisChangedParser>> {
RefCell::new(<Single<RustcIfThisChangedParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcIfThisChangedParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcIfThisChangedParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcIfThisChangedParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcIfThisChangedParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcIfThisChangedParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcIfThisChangedParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcLegacyConstGenericsParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcLegacyConstGenericsParser>> {
RefCell::new(<Single<RustcLegacyConstGenericsParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcLegacyConstGenericsParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcLegacyConstGenericsParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcLegacyConstGenericsParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcLegacyConstGenericsParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcLegacyConstGenericsParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcLegacyConstGenericsParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcLintOptDenyFieldAccessParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcLintOptDenyFieldAccessParser>> {
RefCell::new(<Single<RustcLintOptDenyFieldAccessParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcLintOptDenyFieldAccessParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcLintOptDenyFieldAccessParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcLintOptDenyFieldAccessParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcLintOptDenyFieldAccessParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcLintOptDenyFieldAccessParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcLintOptDenyFieldAccessParser>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcMacroTransparencyParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcMacroTransparencyParser>> {
RefCell::new(<Single<RustcMacroTransparencyParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcMacroTransparencyParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcMacroTransparencyParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcMacroTransparencyParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcMacroTransparencyParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcMacroTransparencyParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcMacroTransparencyParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcMustImplementOneOfParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcMustImplementOneOfParser>> {
RefCell::new(<Single<RustcMustImplementOneOfParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcMustImplementOneOfParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcMustImplementOneOfParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcMustImplementOneOfParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcMustImplementOneOfParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcMustImplementOneOfParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcMustImplementOneOfParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcNeverTypeOptionsParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcNeverTypeOptionsParser>> {
RefCell::new(<Single<RustcNeverTypeOptionsParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcNeverTypeOptionsParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcNeverTypeOptionsParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcNeverTypeOptionsParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcNeverTypeOptionsParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcNeverTypeOptionsParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcNeverTypeOptionsParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcObjcClassParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcObjcClassParser>> {
RefCell::new(<Single<RustcObjcClassParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcObjcClassParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcObjcClassParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcObjcClassParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcObjcClassParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcObjcClassParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcObjcClassParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcObjcSelectorParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcObjcSelectorParser>> {
RefCell::new(<Single<RustcObjcSelectorParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcObjcSelectorParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcObjcSelectorParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcObjcSelectorParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcObjcSelectorParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcObjcSelectorParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcObjcSelectorParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcReservationImplParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcReservationImplParser>> {
RefCell::new(<Single<RustcReservationImplParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcReservationImplParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcReservationImplParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcReservationImplParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcReservationImplParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcReservationImplParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcReservationImplParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcScalableVectorParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcScalableVectorParser>> {
RefCell::new(<Single<RustcScalableVectorParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcScalableVectorParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcScalableVectorParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcScalableVectorParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcScalableVectorParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcScalableVectorParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcScalableVectorParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcSimdMonomorphizeLaneLimitParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcSimdMonomorphizeLaneLimitParser>> {
RefCell::new(<Single<RustcSimdMonomorphizeLaneLimitParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcSimdMonomorphizeLaneLimitParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcSimdMonomorphizeLaneLimitParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcSimdMonomorphizeLaneLimitParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcSimdMonomorphizeLaneLimitParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcSimdMonomorphizeLaneLimitParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcSimdMonomorphizeLaneLimitParser>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcSkipDuringMethodDispatchParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcSkipDuringMethodDispatchParser>> {
RefCell::new(<Single<RustcSkipDuringMethodDispatchParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcSkipDuringMethodDispatchParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcSkipDuringMethodDispatchParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcSkipDuringMethodDispatchParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcSkipDuringMethodDispatchParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcSkipDuringMethodDispatchParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcSkipDuringMethodDispatchParser>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<RustcTestMarkerParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<RustcTestMarkerParser>> {
RefCell::new(<Single<RustcTestMarkerParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<RustcTestMarkerParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcTestMarkerParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<RustcTestMarkerParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<RustcTestMarkerParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<RustcTestMarkerParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<RustcTestMarkerParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<SanitizeParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<SanitizeParser>> {
RefCell::new(<Single<SanitizeParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<SanitizeParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<SanitizeParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<SanitizeParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<SanitizeParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<SanitizeParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<SanitizeParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<ShouldPanicParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<ShouldPanicParser>> {
RefCell::new(<Single<ShouldPanicParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<ShouldPanicParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ShouldPanicParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<ShouldPanicParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<ShouldPanicParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<ShouldPanicParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<ShouldPanicParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<TestRunnerParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<TestRunnerParser>> {
RefCell::new(<Single<TestRunnerParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<TestRunnerParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<TestRunnerParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<TestRunnerParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<TestRunnerParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<TestRunnerParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<TestRunnerParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<TypeLengthLimitParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<TypeLengthLimitParser>> {
RefCell::new(<Single<TypeLengthLimitParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<TypeLengthLimitParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<TypeLengthLimitParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<TypeLengthLimitParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<TypeLengthLimitParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<TypeLengthLimitParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<TypeLengthLimitParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<UnrollParser>>> =
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<UnrollParser>> {
RefCell::new(<Single<UnrollParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<UnrollParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<UnrollParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<UnrollParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<UnrollParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<UnrollParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<UnrollParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WindowsSubsystemParser>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WindowsSubsystemParser>> {
RefCell::new(<Single<WindowsSubsystemParser>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WindowsSubsystemParser>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WindowsSubsystemParser>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WindowsSubsystemParser>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WindowsSubsystemParser>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WindowsSubsystemParser> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WindowsSubsystemParser> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<AllowInternalUnsafeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<AllowInternalUnsafeParser>>> {
RefCell::new(<Single<WithoutArgs<AllowInternalUnsafeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<AllowInternalUnsafeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<AllowInternalUnsafeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<AllowInternalUnsafeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<AllowInternalUnsafeParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<AllowInternalUnsafeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<AllowInternalUnsafeParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<AutomaticallyDerivedParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<AutomaticallyDerivedParser>>> {
RefCell::new(<Single<WithoutArgs<AutomaticallyDerivedParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<AutomaticallyDerivedParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<AutomaticallyDerivedParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<AutomaticallyDerivedParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<AutomaticallyDerivedParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<AutomaticallyDerivedParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<AutomaticallyDerivedParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ColdParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ColdParser>>> {
RefCell::new(<Single<WithoutArgs<ColdParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ColdParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ColdParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ColdParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ColdParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ColdParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ColdParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<CompilerBuiltinsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<CompilerBuiltinsParser>>> {
RefCell::new(<Single<WithoutArgs<CompilerBuiltinsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<CompilerBuiltinsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<CompilerBuiltinsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<CompilerBuiltinsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<CompilerBuiltinsParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<CompilerBuiltinsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<CompilerBuiltinsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ComptimeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ComptimeParser>>> {
RefCell::new(<Single<WithoutArgs<ComptimeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ComptimeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ComptimeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ComptimeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ComptimeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ComptimeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ComptimeParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ConstContinueParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ConstContinueParser>>> {
RefCell::new(<Single<WithoutArgs<ConstContinueParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ConstContinueParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ConstContinueParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ConstContinueParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ConstContinueParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ConstContinueParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ConstContinueParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<CoroutineParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<CoroutineParser>>> {
RefCell::new(<Single<WithoutArgs<CoroutineParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<CoroutineParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<CoroutineParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<CoroutineParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<CoroutineParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<CoroutineParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<CoroutineParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<DefaultLibAllocatorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<DefaultLibAllocatorParser>>> {
RefCell::new(<Single<WithoutArgs<DefaultLibAllocatorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<DefaultLibAllocatorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<DefaultLibAllocatorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<DefaultLibAllocatorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<DefaultLibAllocatorParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<DefaultLibAllocatorParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<DefaultLibAllocatorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ExportStableParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ExportStableParser>>> {
RefCell::new(<Single<WithoutArgs<ExportStableParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ExportStableParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ExportStableParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ExportStableParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ExportStableParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ExportStableParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ExportStableParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<FfiConstParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<FfiConstParser>>> {
RefCell::new(<Single<WithoutArgs<FfiConstParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<FfiConstParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FfiConstParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FfiConstParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<FfiConstParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<FfiConstParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<FfiConstParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<FfiPureParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<FfiPureParser>>> {
RefCell::new(<Single<WithoutArgs<FfiPureParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<FfiPureParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FfiPureParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FfiPureParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<FfiPureParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<FfiPureParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<FfiPureParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<FundamentalParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<FundamentalParser>>> {
RefCell::new(<Single<WithoutArgs<FundamentalParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<FundamentalParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FundamentalParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<FundamentalParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<FundamentalParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<FundamentalParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<FundamentalParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<LoopMatchParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<LoopMatchParser>>> {
RefCell::new(<Single<WithoutArgs<LoopMatchParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<LoopMatchParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<LoopMatchParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<LoopMatchParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<LoopMatchParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<LoopMatchParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<LoopMatchParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<MacroEscapeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<MacroEscapeParser>>> {
RefCell::new(<Single<WithoutArgs<MacroEscapeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<MacroEscapeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MacroEscapeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MacroEscapeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<MacroEscapeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<MacroEscapeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<MacroEscapeParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<MarkerParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<MarkerParser>>> {
RefCell::new(<Single<WithoutArgs<MarkerParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<MarkerParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MarkerParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MarkerParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<MarkerParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<MarkerParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<MarkerParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<MayDangleParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<MayDangleParser>>> {
RefCell::new(<Single<WithoutArgs<MayDangleParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<MayDangleParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MayDangleParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<MayDangleParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<MayDangleParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<MayDangleParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<MayDangleParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NeedsAllocatorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NeedsAllocatorParser>>> {
RefCell::new(<Single<WithoutArgs<NeedsAllocatorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NeedsAllocatorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NeedsAllocatorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NeedsAllocatorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NeedsAllocatorParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NeedsAllocatorParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NeedsAllocatorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NeedsPanicRuntimeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NeedsPanicRuntimeParser>>> {
RefCell::new(<Single<WithoutArgs<NeedsPanicRuntimeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NeedsPanicRuntimeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NeedsPanicRuntimeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NeedsPanicRuntimeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NeedsPanicRuntimeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NeedsPanicRuntimeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NeedsPanicRuntimeParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoBuiltinsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoBuiltinsParser>>> {
RefCell::new(<Single<WithoutArgs<NoBuiltinsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoBuiltinsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoBuiltinsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoBuiltinsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoBuiltinsParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoBuiltinsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoBuiltinsParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoCoreParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoCoreParser>>> {
RefCell::new(<Single<WithoutArgs<NoCoreParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoCoreParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoCoreParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoCoreParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoCoreParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoCoreParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoCoreParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoImplicitPreludeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoImplicitPreludeParser>>> {
RefCell::new(<Single<WithoutArgs<NoImplicitPreludeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoImplicitPreludeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoImplicitPreludeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoImplicitPreludeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoImplicitPreludeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoImplicitPreludeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoImplicitPreludeParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoLinkParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoLinkParser>>> {
RefCell::new(<Single<WithoutArgs<NoLinkParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoLinkParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoLinkParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoLinkParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoLinkParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoLinkParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoLinkParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoMainParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoMainParser>>> {
RefCell::new(<Single<WithoutArgs<NoMainParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoMainParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoMainParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoMainParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoMainParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoMainParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoMainParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoMangleParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoMangleParser>>> {
RefCell::new(<Single<WithoutArgs<NoMangleParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoMangleParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoMangleParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoMangleParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoMangleParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoMangleParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoMangleParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NoStdParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NoStdParser>>> {
RefCell::new(<Single<WithoutArgs<NoStdParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NoStdParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoStdParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NoStdParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NoStdParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NoStdParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NoStdParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<NonExhaustiveParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<NonExhaustiveParser>>> {
RefCell::new(<Single<WithoutArgs<NonExhaustiveParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<NonExhaustiveParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NonExhaustiveParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<NonExhaustiveParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<NonExhaustiveParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<NonExhaustiveParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<NonExhaustiveParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<PanicHandlerParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<PanicHandlerParser>>> {
RefCell::new(<Single<WithoutArgs<PanicHandlerParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<PanicHandlerParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PanicHandlerParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PanicHandlerParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<PanicHandlerParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<PanicHandlerParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<PanicHandlerParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<PanicRuntimeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<PanicRuntimeParser>>> {
RefCell::new(<Single<WithoutArgs<PanicRuntimeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<PanicRuntimeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PanicRuntimeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PanicRuntimeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<PanicRuntimeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<PanicRuntimeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<PanicRuntimeParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<PinV2Parser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<PinV2Parser>>> {
RefCell::new(<Single<WithoutArgs<PinV2Parser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<PinV2Parser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PinV2Parser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PinV2Parser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<PinV2Parser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<PinV2Parser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<PinV2Parser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<PreludeImportParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<PreludeImportParser>>> {
RefCell::new(<Single<WithoutArgs<PreludeImportParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<PreludeImportParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PreludeImportParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<PreludeImportParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<PreludeImportParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<PreludeImportParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<PreludeImportParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ProcMacroAttributeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ProcMacroAttributeParser>>> {
RefCell::new(<Single<WithoutArgs<ProcMacroAttributeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ProcMacroAttributeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProcMacroAttributeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProcMacroAttributeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ProcMacroAttributeParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ProcMacroAttributeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ProcMacroAttributeParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ProcMacroParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ProcMacroParser>>> {
RefCell::new(<Single<WithoutArgs<ProcMacroParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ProcMacroParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProcMacroParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProcMacroParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ProcMacroParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ProcMacroParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ProcMacroParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ProfilerRuntimeParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ProfilerRuntimeParser>>> {
RefCell::new(<Single<WithoutArgs<ProfilerRuntimeParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ProfilerRuntimeParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProfilerRuntimeParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ProfilerRuntimeParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ProfilerRuntimeParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ProfilerRuntimeParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ProfilerRuntimeParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcAllocatorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcAllocatorParser>>> {
RefCell::new(<Single<WithoutArgs<RustcAllocatorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcAllocatorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllocatorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllocatorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcAllocatorParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcAllocatorParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcAllocatorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcAllocatorZeroedParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcAllocatorZeroedParser>>> {
RefCell::new(<Single<WithoutArgs<RustcAllocatorZeroedParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcAllocatorZeroedParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllocatorZeroedParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllocatorZeroedParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcAllocatorZeroedParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcAllocatorZeroedParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcAllocatorZeroedParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcAllowIncoherentImplParser>>> {
RefCell::new(<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcAllowIncoherentImplParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcAllowIncoherentImplParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcAllowIncoherentImplParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>> {
RefCell::new(<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcAsPtrParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcAsPtrParser>>> {
RefCell::new(<Single<WithoutArgs<RustcAsPtrParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcAsPtrParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAsPtrParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcAsPtrParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcAsPtrParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcAsPtrParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcAsPtrParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcCanonicalSymbolParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcCanonicalSymbolParser>>> {
RefCell::new(<Single<WithoutArgs<RustcCanonicalSymbolParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcCanonicalSymbolParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCanonicalSymbolParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCanonicalSymbolParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcCanonicalSymbolParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcCanonicalSymbolParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcCanonicalSymbolParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcCaptureAnalysisParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcCaptureAnalysisParser>>> {
RefCell::new(<Single<WithoutArgs<RustcCaptureAnalysisParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcCaptureAnalysisParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCaptureAnalysisParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCaptureAnalysisParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcCaptureAnalysisParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcCaptureAnalysisParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcCaptureAnalysisParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcCoherenceIsCoreParser>>> {
RefCell::new(<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcCoherenceIsCoreParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcCoherenceIsCoreParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcCoherenceIsCoreParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcCoinductiveParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcCoinductiveParser>>> {
RefCell::new(<Single<WithoutArgs<RustcCoinductiveParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcCoinductiveParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCoinductiveParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcCoinductiveParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcCoinductiveParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcCoinductiveParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcCoinductiveParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcConstStableIndirectParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcConstStableIndirectParser>>> {
RefCell::new(<Single<WithoutArgs<RustcConstStableIndirectParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcConstStableIndirectParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcConstStableIndirectParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcConstStableIndirectParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcConstStableIndirectParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcConstStableIndirectParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcConstStableIndirectParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcConversionSuggestionParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcConversionSuggestionParser>>> {
RefCell::new(<Single<WithoutArgs<RustcConversionSuggestionParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcConversionSuggestionParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcConversionSuggestionParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcConversionSuggestionParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcConversionSuggestionParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcConversionSuggestionParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcConversionSuggestionParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDeallocatorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDeallocatorParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDeallocatorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDeallocatorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDeallocatorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDeallocatorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDeallocatorParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDeallocatorParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDeallocatorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDenyExplicitImplParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDenyExplicitImplParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDenyExplicitImplParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDenyExplicitImplParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDenyExplicitImplParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDenyExplicitImplParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDenyExplicitImplParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDenyExplicitImplParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDenyExplicitImplParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDoNotConstCheckParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDoNotConstCheckParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDoNotConstCheckParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDoNotConstCheckParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDoNotConstCheckParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDoNotConstCheckParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDoNotConstCheckParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDoNotConstCheckParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDoNotConstCheckParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpDefParentsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpDefParentsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpDefParentsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpDefParentsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpDefParentsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpDefParentsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpDefParentsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpDefParentsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpDefParentsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpGenericsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpGenericsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpGenericsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpGenericsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpGenericsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpGenericsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpGenericsParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpGenericsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpGenericsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpInferredOutlivesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpInferredOutlivesParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpInferredOutlivesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpItemBoundsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpItemBoundsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpItemBoundsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpItemBoundsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpItemBoundsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpItemBoundsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpItemBoundsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpItemBoundsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpItemBoundsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpPredicatesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpPredicatesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpPredicatesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpPredicatesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpPredicatesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpPredicatesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpPredicatesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpPredicatesParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpPredicatesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpUserArgsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpUserArgsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpUserArgsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpUserArgsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpUserArgsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpUserArgsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpUserArgsParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpUserArgsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpUserArgsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpVariancesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpVariancesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpVariancesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpVariancesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVariancesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVariancesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpVariancesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpVariancesParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpVariancesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDumpVtableParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcDumpVtableParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDumpVtableParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDumpVtableParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVtableParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDumpVtableParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDumpVtableParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDumpVtableParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDumpVtableParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>> {
RefCell::new(<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcDynIncompatibleTraitParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcDynIncompatibleTraitParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcDynIncompatibleTraitParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcEffectiveVisibilityParser>>> {
RefCell::new(<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcEffectiveVisibilityParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcEffectiveVisibilityParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcEffectiveVisibilityParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcEiiForeignItemParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcEiiForeignItemParser>>> {
RefCell::new(<Single<WithoutArgs<RustcEiiForeignItemParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcEiiForeignItemParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEiiForeignItemParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEiiForeignItemParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcEiiForeignItemParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcEiiForeignItemParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcEiiForeignItemParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>> {
RefCell::new(<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcEvaluateWhereClausesParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcEvaluateWhereClausesParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcEvaluateWhereClausesParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcExhaustiveParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcExhaustiveParser>>> {
RefCell::new(<Single<WithoutArgs<RustcExhaustiveParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcExhaustiveParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcExhaustiveParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcExhaustiveParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcExhaustiveParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcExhaustiveParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcExhaustiveParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcInheritOverflowChecksParser>>> {
RefCell::new(<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcInheritOverflowChecksParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcInheritOverflowChecksParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcInheritOverflowChecksParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcInsignificantDtorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcInsignificantDtorParser>>> {
RefCell::new(<Single<WithoutArgs<RustcInsignificantDtorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcInsignificantDtorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcInsignificantDtorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcInsignificantDtorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcInsignificantDtorParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcInsignificantDtorParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcInsignificantDtorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>> {
RefCell::new(<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcIntrinsicParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcIntrinsicParser>>> {
RefCell::new(<Single<WithoutArgs<RustcIntrinsicParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcIntrinsicParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcIntrinsicParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcIntrinsicParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcIntrinsicParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcIntrinsicParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcIntrinsicParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcLintOptTyParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcLintOptTyParser>>> {
RefCell::new(<Single<WithoutArgs<RustcLintOptTyParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcLintOptTyParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintOptTyParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintOptTyParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcLintOptTyParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcLintOptTyParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcLintOptTyParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcLintQueryInstabilityParser>>> {
RefCell::new(<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcLintQueryInstabilityParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcLintQueryInstabilityParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcLintQueryInstabilityParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>> {
RefCell::new(<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcMainParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcMainParser>>> {
RefCell::new(<Single<WithoutArgs<RustcMainParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcMainParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcMainParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcMainParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcMainParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcMainParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcMainParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNoImplicitAutorefsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNoImplicitAutorefsParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNoImplicitAutorefsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcNoImplicitBoundsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNoImplicitBoundsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNoImplicitBoundsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNoImplicitBoundsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNoMirInlineParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcNoMirInlineParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNoMirInlineParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNoMirInlineParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoMirInlineParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoMirInlineParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNoMirInlineParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNoMirInlineParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNoMirInlineParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNoWritableParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcNoWritableParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNoWritableParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNoWritableParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoWritableParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNoWritableParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNoWritableParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNoWritableParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNoWritableParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcNonConstTraitMethodParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNonConstTraitMethodParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNonConstTraitMethodParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNonConstTraitMethodParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcNounwindParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcNounwindParser>>> {
RefCell::new(<Single<WithoutArgs<RustcNounwindParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcNounwindParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNounwindParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcNounwindParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcNounwindParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcNounwindParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcNounwindParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcOffloadKernelParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcOffloadKernelParser>>> {
RefCell::new(<Single<WithoutArgs<RustcOffloadKernelParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcOffloadKernelParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcOffloadKernelParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcOffloadKernelParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcOffloadKernelParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcOffloadKernelParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcOffloadKernelParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcPanicsWhenZeroParser>>> {
RefCell::new(<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcPanicsWhenZeroParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcPanicsWhenZeroParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcPanicsWhenZeroParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcParenSugarParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcParenSugarParser>>> {
RefCell::new(<Single<WithoutArgs<RustcParenSugarParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcParenSugarParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcParenSugarParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcParenSugarParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcParenSugarParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcParenSugarParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcParenSugarParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcPassByValueParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcPassByValueParser>>> {
RefCell::new(<Single<WithoutArgs<RustcPassByValueParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcPassByValueParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPassByValueParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPassByValueParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcPassByValueParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcPassByValueParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcPassByValueParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>> {
RefCell::new(<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcPreserveUbChecksParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcPreserveUbChecksParser>>> {
RefCell::new(<Single<WithoutArgs<RustcPreserveUbChecksParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcPreserveUbChecksParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPreserveUbChecksParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPreserveUbChecksParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcPreserveUbChecksParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcPreserveUbChecksParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcPreserveUbChecksParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcProcMacroDeclsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcProcMacroDeclsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcProcMacroDeclsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcProcMacroDeclsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcProcMacroDeclsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcProcMacroDeclsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcProcMacroDeclsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcProcMacroDeclsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcProcMacroDeclsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcPubTransparentParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcPubTransparentParser>>> {
RefCell::new(<Single<WithoutArgs<RustcPubTransparentParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcPubTransparentParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPubTransparentParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcPubTransparentParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcPubTransparentParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcPubTransparentParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcPubTransparentParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcReallocatorParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcReallocatorParser>>> {
RefCell::new(<Single<WithoutArgs<RustcReallocatorParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcReallocatorParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcReallocatorParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcReallocatorParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcReallocatorParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcReallocatorParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcReallocatorParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcRegionsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<RustcRegionsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcRegionsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcRegionsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcRegionsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcRegionsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcRegionsParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcRegionsParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcRegionsParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcSpecializationTraitParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcSpecializationTraitParser>>> {
RefCell::new(<Single<WithoutArgs<RustcSpecializationTraitParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcSpecializationTraitParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcSpecializationTraitParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcSpecializationTraitParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcSpecializationTraitParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcSpecializationTraitParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcSpecializationTraitParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcStdInternalSymbolParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcStdInternalSymbolParser>>> {
RefCell::new(<Single<WithoutArgs<RustcStdInternalSymbolParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcStdInternalSymbolParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcStdInternalSymbolParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcStdInternalSymbolParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcStdInternalSymbolParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcStdInternalSymbolParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcStdInternalSymbolParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcStrictCoherenceParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcStrictCoherenceParser>>> {
RefCell::new(<Single<WithoutArgs<RustcStrictCoherenceParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcStrictCoherenceParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcStrictCoherenceParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcStrictCoherenceParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcStrictCoherenceParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcStrictCoherenceParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcStrictCoherenceParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcTestEntrypointMarkerParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcTestEntrypointMarkerParser>>> {
RefCell::new(<Single<WithoutArgs<RustcTestEntrypointMarkerParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcTestEntrypointMarkerParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcTestEntrypointMarkerParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcTestEntrypointMarkerParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcTestEntrypointMarkerParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcTestEntrypointMarkerParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcTestEntrypointMarkerParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
->
RefCell<Single<WithoutArgs<RustcTrivialFieldReadsParser>>> {
RefCell::new(<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<RustcTrivialFieldReadsParser>>>::ATTRIBUTES
{
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<RustcTrivialFieldReadsParser>>
as crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<RustcTrivialFieldReadsParser>>
as crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<SplatParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<SplatParser>>> {
RefCell::new(<Single<WithoutArgs<SplatParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<SplatParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<SplatParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<SplatParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<SplatParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<SplatParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<SplatParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<ThreadLocalParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<ThreadLocalParser>>> {
RefCell::new(<Single<WithoutArgs<ThreadLocalParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<ThreadLocalParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ThreadLocalParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<ThreadLocalParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<ThreadLocalParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<ThreadLocalParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<ThreadLocalParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
{
const STATE_OBJECT:
::std::thread::LocalKey<RefCell<Single<WithoutArgs<TrackCallerParser>>>>
=
{
#[inline]
fn __rust_std_internal_init_fn()
-> RefCell<Single<WithoutArgs<TrackCallerParser>>> {
RefCell::new(<Single<WithoutArgs<TrackCallerParser>>>::default())
}
unsafe {
::std::thread::LocalKey::new(const {
if ::std::mem::needs_drop::<RefCell<Single<WithoutArgs<TrackCallerParser>>>>()
{
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<TrackCallerParser>>>,
()> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
} else {
|__rust_std_internal_init|
{
#[thread_local]
static __RUST_STD_INTERNAL_VAL:
::std::thread::local_impl::LazyStorage<RefCell<Single<WithoutArgs<TrackCallerParser>>>,
!> =
::std::thread::local_impl::LazyStorage::new();
__RUST_STD_INTERNAL_VAL.get_or_init(__rust_std_internal_init,
__rust_std_internal_init_fn)
}
}
})
}
};
for (path, template, stability, accept_fn) in
<Single<WithoutArgs<TrackCallerParser>>>::ATTRIBUTES {
match accepters.entry(*path) {
Entry::Vacant(e) => {
e.insert(GroupTypeInnerAccept {
template: *template,
accept_fn: Box::new(|cx, args|
{
STATE_OBJECT.with_borrow_mut(|s| { accept_fn(s, cx, args) })
}),
safety: <Single<WithoutArgs<TrackCallerParser>> as
crate::attributes::AttributeParser>::SAFETY,
stability: *stability,
allowed_targets: <Single<WithoutArgs<TrackCallerParser>> as
crate::attributes::AttributeParser>::ALLOWED_TARGETS,
finalizer: |cx|
{
let state = STATE_OBJECT.take();
let deferred_check = state.deferred_finalize_check();
let attr = state.finalize(cx);
FinalizeOutput { attr, deferred_check }
},
});
}
Entry::Occupied(_) => {
::core::panicking::panic_fmt(format_args!("Attribute {0:?} has multiple accepters",
path));
}
}
}
}
GroupTypeInner { accepters }
});attribute_parsers!(
162 pub(crate) static ATTRIBUTE_PARSERS = [
163 // tidy-alphabetical-start
164 BodyStabilityParser,
165 ConfusablesParser,
166 ConstStabilityParser,
167 DocParser,
168 MacroUseParser,
169 NakedParser,
170 OnConstParser,
171 OnMoveParser,
172 OnTypeErrorParser,
173 OnUnimplementedParser,
174 OnUnknownParser,
175 OnUnmatchedArgsParser,
176 OpaqueParser,
177 RegisterToolParser,
178 RustcAlignParser,
179 RustcAlignStaticParser,
180 RustcCguTestAttributeParser,
181 StabilityParser,
182 UsedParser,
183 // tidy-alphabetical-end
184
185 // tidy-alphabetical-start
186 Combine<AllowInternalUnstableParser>,
187 Combine<CrateTypeParser>,
188 Combine<DebuggerVisualizerParser>,
189 Combine<FeatureParser>,
190 Combine<ForceTargetFeatureParser>,
191 Combine<LinkParser>,
192 Combine<ReprParser>,
193 Combine<RustcAllowConstFnUnstableParser>,
194 Combine<RustcCleanParser>,
195 Combine<RustcDumpLayoutParser>,
196 Combine<RustcMirParser>,
197 Combine<RustcThenThisWouldNeedParser>,
198 Combine<TargetFeatureParser>,
199 Combine<UnstableFeatureBoundParser>,
200 Combine<UnstableRemovedParser>,
201 // tidy-alphabetical-end
202
203 // tidy-alphabetical-start
204 Single<CfiEncodingParser>,
205 Single<CollapseDebugInfoParser>,
206 Single<CoverageParser>,
207 Single<CrateNameParser>,
208 Single<CustomMirParser>,
209 Single<DeprecatedParser>,
210 Single<DoNotRecommendParser>,
211 Single<ExportNameParser>,
212 Single<IgnoreParser>,
213 Single<InlineParser>,
214 Single<InstructionSetParser>,
215 Single<InstrumentFnParser>,
216 Single<LangParser>,
217 Single<LinkNameParser>,
218 Single<LinkOrdinalParser>,
219 Single<LinkSectionParser>,
220 Single<LinkageParser>,
221 Single<MacroExportParser>,
222 Single<MoveSizeLimitParser>,
223 Single<MustNotSuspendParser>,
224 Single<MustUseParser>,
225 Single<OptimizeParser>,
226 Single<PatchableFunctionEntryParser>,
227 Single<PathAttributeParser>,
228 Single<PatternComplexityLimitParser>,
229 Single<ProcMacroDeriveParser>,
230 Single<RecursionLimitParser>,
231 Single<ReexportTestHarnessMainParser>,
232 Single<RustcAbiParser>,
233 Single<RustcAllocatorZeroedVariantParser>,
234 Single<RustcAutodiffParser>,
235 Single<RustcBuiltinMacroParser>,
236 Single<RustcDeprecatedSafe2024Parser>,
237 Single<RustcDiagnosticItemParser>,
238 Single<RustcDocPrimitiveParser>,
239 Single<RustcDummyParser>,
240 Single<RustcDumpDefPathParser>,
241 Single<RustcDumpSymbolNameParser>,
242 Single<RustcForceInlineParser>,
243 Single<RustcIfThisChangedParser>,
244 Single<RustcLegacyConstGenericsParser>,
245 Single<RustcLintOptDenyFieldAccessParser>,
246 Single<RustcMacroTransparencyParser>,
247 Single<RustcMustImplementOneOfParser>,
248 Single<RustcNeverTypeOptionsParser>,
249 Single<RustcObjcClassParser>,
250 Single<RustcObjcSelectorParser>,
251 Single<RustcReservationImplParser>,
252 Single<RustcScalableVectorParser>,
253 Single<RustcSimdMonomorphizeLaneLimitParser>,
254 Single<RustcSkipDuringMethodDispatchParser>,
255 Single<RustcTestMarkerParser>,
256 Single<SanitizeParser>,
257 Single<ShouldPanicParser>,
258 Single<TestRunnerParser>,
259 Single<TypeLengthLimitParser>,
260 Single<UnrollParser>,
261 Single<WindowsSubsystemParser>,
262 Single<WithoutArgs<AllowInternalUnsafeParser>>,
263 Single<WithoutArgs<AutomaticallyDerivedParser>>,
264 Single<WithoutArgs<ColdParser>>,
265 Single<WithoutArgs<CompilerBuiltinsParser>>,
266 Single<WithoutArgs<ComptimeParser>>,
267 Single<WithoutArgs<ConstContinueParser>>,
268 Single<WithoutArgs<CoroutineParser>>,
269 Single<WithoutArgs<DefaultLibAllocatorParser>>,
270 Single<WithoutArgs<ExportStableParser>>,
271 Single<WithoutArgs<FfiConstParser>>,
272 Single<WithoutArgs<FfiPureParser>>,
273 Single<WithoutArgs<FundamentalParser>>,
274 Single<WithoutArgs<LoopMatchParser>>,
275 Single<WithoutArgs<MacroEscapeParser>>,
276 Single<WithoutArgs<MarkerParser>>,
277 Single<WithoutArgs<MayDangleParser>>,
278 Single<WithoutArgs<NeedsAllocatorParser>>,
279 Single<WithoutArgs<NeedsPanicRuntimeParser>>,
280 Single<WithoutArgs<NoBuiltinsParser>>,
281 Single<WithoutArgs<NoCoreParser>>,
282 Single<WithoutArgs<NoImplicitPreludeParser>>,
283 Single<WithoutArgs<NoLinkParser>>,
284 Single<WithoutArgs<NoMainParser>>,
285 Single<WithoutArgs<NoMangleParser>>,
286 Single<WithoutArgs<NoStdParser>>,
287 Single<WithoutArgs<NonExhaustiveParser>>,
288 Single<WithoutArgs<PanicHandlerParser>>,
289 Single<WithoutArgs<PanicRuntimeParser>>,
290 Single<WithoutArgs<PinV2Parser>>,
291 Single<WithoutArgs<PreludeImportParser>>,
292 Single<WithoutArgs<ProcMacroAttributeParser>>,
293 Single<WithoutArgs<ProcMacroParser>>,
294 Single<WithoutArgs<ProfilerRuntimeParser>>,
295 Single<WithoutArgs<RustcAllocatorParser>>,
296 Single<WithoutArgs<RustcAllocatorZeroedParser>>,
297 Single<WithoutArgs<RustcAllowIncoherentImplParser>>,
298 Single<WithoutArgs<RustcAllowLifetimeDependentSpecializationParser>>,
299 Single<WithoutArgs<RustcAsPtrParser>>,
300 Single<WithoutArgs<RustcCanonicalSymbolParser>>,
301 Single<WithoutArgs<RustcCaptureAnalysisParser>>,
302 Single<WithoutArgs<RustcCoherenceIsCoreParser>>,
303 Single<WithoutArgs<RustcCoinductiveParser>>,
304 Single<WithoutArgs<RustcConstStableIndirectParser>>,
305 Single<WithoutArgs<RustcConversionSuggestionParser>>,
306 Single<WithoutArgs<RustcDeallocatorParser>>,
307 Single<WithoutArgs<RustcDelayedBugFromInsideQueryParser>>,
308 Single<WithoutArgs<RustcDenyExplicitImplParser>>,
309 Single<WithoutArgs<RustcDoNotConstCheckParser>>,
310 Single<WithoutArgs<RustcDumpDefParentsParser>>,
311 Single<WithoutArgs<RustcDumpGenericsParser>>,
312 Single<WithoutArgs<RustcDumpHiddenTypeOfOpaquesParser>>,
313 Single<WithoutArgs<RustcDumpInferredOutlivesParser>>,
314 Single<WithoutArgs<RustcDumpItemBoundsParser>>,
315 Single<WithoutArgs<RustcDumpObjectLifetimeDefaultsParser>>,
316 Single<WithoutArgs<RustcDumpPredicatesParser>>,
317 Single<WithoutArgs<RustcDumpUserArgsParser>>,
318 Single<WithoutArgs<RustcDumpVariancesOfOpaquesParser>>,
319 Single<WithoutArgs<RustcDumpVariancesParser>>,
320 Single<WithoutArgs<RustcDumpVtableParser>>,
321 Single<WithoutArgs<RustcDynIncompatibleTraitParser>>,
322 Single<WithoutArgs<RustcEffectiveVisibilityParser>>,
323 Single<WithoutArgs<RustcEiiForeignItemParser>>,
324 Single<WithoutArgs<RustcEvaluateWhereClausesParser>>,
325 Single<WithoutArgs<RustcExhaustiveParser>>,
326 Single<WithoutArgs<RustcHasIncoherentInherentImplsParser>>,
327 Single<WithoutArgs<RustcInheritOverflowChecksParser>>,
328 Single<WithoutArgs<RustcInsignificantDtorParser>>,
329 Single<WithoutArgs<RustcIntrinsicConstStableIndirectParser>>,
330 Single<WithoutArgs<RustcIntrinsicParser>>,
331 Single<WithoutArgs<RustcLintOptTyParser>>,
332 Single<WithoutArgs<RustcLintQueryInstabilityParser>>,
333 Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>,
334 Single<WithoutArgs<RustcMainParser>>,
335 Single<WithoutArgs<RustcNeverReturnsNullPtrParser>>,
336 Single<WithoutArgs<RustcNoImplicitAutorefsParser>>,
337 Single<WithoutArgs<RustcNoImplicitBoundsParser>>,
338 Single<WithoutArgs<RustcNoMirInlineParser>>,
339 Single<WithoutArgs<RustcNoWritableParser>>,
340 Single<WithoutArgs<RustcNonConstTraitMethodParser>>,
341 Single<WithoutArgs<RustcNonnullOptimizationGuaranteedParser>>,
342 Single<WithoutArgs<RustcNounwindParser>>,
343 Single<WithoutArgs<RustcOffloadKernelParser>>,
344 Single<WithoutArgs<RustcPanicsWhenZeroParser>>,
345 Single<WithoutArgs<RustcParenSugarParser>>,
346 Single<WithoutArgs<RustcPassByValueParser>>,
347 Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>,
348 Single<WithoutArgs<RustcPreserveUbChecksParser>>,
349 Single<WithoutArgs<RustcProcMacroDeclsParser>>,
350 Single<WithoutArgs<RustcPubTransparentParser>>,
351 Single<WithoutArgs<RustcReallocatorParser>>,
352 Single<WithoutArgs<RustcRegionsParser>>,
353 Single<WithoutArgs<RustcShouldNotBeCalledOnConstItemsParser>>,
354 Single<WithoutArgs<RustcSpecializationTraitParser>>,
355 Single<WithoutArgs<RustcStdInternalSymbolParser>>,
356 Single<WithoutArgs<RustcStrictCoherenceParser>>,
357 Single<WithoutArgs<RustcTestEntrypointMarkerParser>>,
358 Single<WithoutArgs<RustcTrivialFieldReadsParser>>,
359 Single<WithoutArgs<SplatParser>>,
360 Single<WithoutArgs<ThreadLocalParser>>,
361 Single<WithoutArgs<TrackCallerParser>>,
362 // tidy-alphabetical-end
363 ];
364);
365
366/// Context given to every attribute parser when accepting
367///
368/// Gives [`AttributeParser`]s enough information to create errors, for example.
369pub struct AcceptContext<'f, 'sess> {
370 pub(crate) shared: SharedContext<'f, 'sess>,
371
372 /// The outer span of the attribute currently being parsed
373 ///
374 /// ```none
375 /// #[attribute(...)]
376 /// ^^^^^^^^^^^^^^^^^ outer span
377 /// ```
378 /// For attributes in `cfg_attr`, the outer span and inner spans are equal.
379 pub(crate) attr_span: Span,
380 /// The inner span of the attribute currently being parsed.
381 ///
382 /// ```none
383 /// #[attribute(...)]
384 /// ^^^^^^^^^^^^^^ inner span
385 /// ```
386 pub(crate) inner_span: Span,
387
388 /// Whether it is an inner or outer attribute.
389 pub(crate) attr_style: AttrStyle,
390
391 /// A description of the thing we are parsing using this attribute parser.
392 /// We are not only using these parsers for attributes, but also for macros such as the `cfg!()` macro.
393 pub(crate) parsed_description: ParsedDescription,
394
395 /// The expected structure of the attribute.
396 ///
397 /// Used in reporting errors to give a hint to users what the attribute *should* look like.
398 pub(crate) template: &'f AttributeTemplate,
399
400 /// The safety attribute (if any) applied to the attribute.
401 pub(crate) attr_safety: Safety,
402
403 /// The name of the attribute we're currently accepting.
404 pub(crate) attr_path: AttrPath,
405
406 /// Used for `AllowedTargets::ManuallyChecked`, to assert that the manual target check has been done
407 #[cfg(debug_assertions)]
408 pub(crate) has_target_been_checked: bool,
409}
410
411impl<'f, 'sess: 'f> SharedContext<'f, 'sess> {
412 pub(crate) fn emit_err(&self, diag: impl for<'x> Diagnostic<'x>) -> ErrorGuaranteed {
413 self.cx.emit_err(diag)
414 }
415
416 /// Emit a lint. This method is somewhat special, since lints emitted during attribute parsing
417 /// must be delayed until after HIR is built. This method will take care of the details of
418 /// that.
419 pub(crate) fn emit_lint(
420 &mut self,
421 lint: &'static Lint,
422 diagnostic: impl for<'x> Diagnostic<'x, ()> + DynSend + DynSync + 'static,
423 span: impl Into<MultiSpan>,
424 ) {
425 self.emit_lint_inner(
426 lint,
427 EmitAttribute(Box::new(move |dcx, level, _| diagnostic.into_diag(dcx, level))),
428 span,
429 );
430 }
431
432 pub(crate) fn emit_lint_with_sess<
433 F: for<'a> FnOnce(DiagCtxtHandle<'a>, Level, &Session) -> Diag<'a, ()>
434 + DynSend
435 + DynSync
436 + 'static,
437 >(
438 &mut self,
439 lint: &'static Lint,
440 callback: F,
441 span: impl Into<MultiSpan>,
442 ) {
443 self.emit_lint_inner(lint, EmitAttribute(Box::new(callback)), span);
444 }
445
446 fn emit_lint_inner(
447 &mut self,
448 lint: &'static Lint,
449 kind: EmitAttribute,
450 span: impl Into<MultiSpan>,
451 ) {
452 #[cfg(debug_assertions)]
453 self.has_lint_been_emitted.store(true, Ordering::Relaxed);
454 if !#[allow(non_exhaustive_omitted_patterns)] match self.should_emit {
ShouldEmit::ErrorsAndLints { .. } | ShouldEmit::EarlyFatal {
also_emit_lints: true } => true,
_ => false,
}matches!(
455 self.should_emit,
456 ShouldEmit::ErrorsAndLints { .. } | ShouldEmit::EarlyFatal { also_emit_lints: true }
457 ) {
458 return;
459 }
460 (self.emit_lint)(LintId::of(lint), span.into(), kind);
461 }
462
463 pub(crate) fn warn_unused_duplicate(&mut self, used_span: Span, unused_span: Span) {
464 self.emit_lint(
465 rustc_session::lint::builtin::UNUSED_ATTRIBUTES,
466 UnusedDuplicate { this: unused_span, other: used_span, warning: false },
467 unused_span,
468 )
469 }
470
471 pub(crate) fn warn_unused_duplicate_future_error(
472 &mut self,
473 used_span: Span,
474 unused_span: Span,
475 ) {
476 self.emit_lint(
477 rustc_session::lint::builtin::UNUSED_ATTRIBUTES,
478 UnusedDuplicate { this: unused_span, other: used_span, warning: true },
479 unused_span,
480 )
481 }
482}
483
484impl<'f, 'sess: 'f> AcceptContext<'f, 'sess> {
485 pub(crate) fn adcx(&mut self) -> AttributeDiagnosticContext<'_, 'f, 'sess> {
486 AttributeDiagnosticContext { ctx: self, custom_suggestions: Vec::new() }
487 }
488
489 /// Asserts that this `MetaItem` is a list that contains a single element. Emits an error and
490 /// returns `None` if it is not the case.
491 ///
492 /// Some examples:
493 ///
494 /// - In `#[allow(warnings)]`, `warnings` is returned
495 /// - In `#[cfg_attr(docsrs, doc = "foo")]`, `None` is returned, "expected a single argument
496 /// here" is emitted.
497 /// - In `#[cfg()]`, `None` is returned, "expected an argument here" is emitted.
498 ///
499 /// The provided span is used as a fallback for diagnostic generation in case `arg` does not
500 /// contain any. It should be the span of the node that contains `arg`.
501 pub(crate) fn expect_single_element_list<'arg>(
502 &mut self,
503 arg: &'arg ArgParser,
504 span: Span,
505 ) -> Option<&'arg MetaItemOrLitParser> {
506 let ArgParser::List(l) = arg else {
507 self.adcx().expected_list(span, arg);
508 return None;
509 };
510
511 let Some(single) = l.as_single() else {
512 self.adcx().expected_single_argument(l.span, l.len());
513 return None;
514 };
515
516 Some(single)
517 }
518
519 /// Asserts that an [`ArgParser`] is a list and returns it, or emits an error and returns
520 /// `None`.
521 ///
522 /// Some examples:
523 ///
524 /// - `#[allow(clippy::complexity)]`: `(clippy::complexity)` is a list
525 /// - `#[rustfmt::skip::macros(target_macro_name)]`: `(target_macro_name)` is a list
526 ///
527 /// This is a higher-level (and harder to misuse) wrapper over [`ArgParser::as_list`] that
528 /// allows using `?` when the attribute parsing function allows it. You may still want to use
529 /// [`ArgParser::as_list`] for the following reasons:
530 ///
531 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
532 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
533 pub(crate) fn expect_list<'arg>(
534 &mut self,
535 args: &'arg ArgParser,
536 span: Span,
537 ) -> Option<&'arg MetaItemListParser> {
538 let list = args.as_list();
539 if list.is_none() {
540 self.adcx().expected_list(span, args);
541 }
542 list
543 }
544
545 /// Asserts that a [`MetaItemListParser`] contains a single element and returns it, or emits an
546 /// error and returns `None`.
547 ///
548 /// This is a higher-level (and harder to misuse) wrapper over [`MetaItemListParser::as_single`],
549 /// that allows using `?` to early return. You may still want to use
550 /// [`MetaItemListParser::as_single`] for the following reasons:
551 ///
552 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
553 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
554 pub(crate) fn expect_single<'arg>(
555 &mut self,
556 list: &'arg MetaItemListParser,
557 ) -> Option<&'arg MetaItemOrLitParser> {
558 let single = list.as_single();
559 if single.is_none() {
560 self.adcx().expected_single_argument(list.span, list.len());
561 }
562 single
563 }
564
565 /// Asserts that a node is a name-value pair.
566 ///
567 /// Some examples:
568 ///
569 /// - `#[clippy::cyclomatic_complexity = "100"]`: `clippy::cyclomatic_complexity = "100"` is a
570 /// name-value pair, where the name is a path (`clippy::cyclomatic_complexity`). You already
571 /// checked the path to get an `ArgParser`, so this method will effectively only assert that
572 /// the `= "100"` is there and returns it.
573 /// - `#[doc = "hello"]`: `doc = "hello` is also a name value pair. `= "hello"` is returned.
574 /// - `#[serde(rename_all = "lowercase")]`: `rename_all = "lowercase"` is a name value pair,
575 /// where the name is an identifier (`rename_all`) and the value is a literal (`"lowercase"`).
576 /// This returns both the path and the value.
577 ///
578 /// `arg` must be a reference to any node that may contain a name-value pair, that is:
579 ///
580 /// - [`MetaItemOrLitParser`],
581 /// - [`MetaItemParser`],
582 /// - [`ArgParser`].
583 ///
584 /// `name` can be set to `Some` for a nicer error message talking about the specific name that
585 /// was found lacking a value.
586 ///
587 /// This is a higher-level (and harder to misuse) wrapper over multiple `as_` methods in the
588 /// [`parser`][crate::parser] module. You may still want to use the lower-level methods for the
589 /// following reasons:
590 ///
591 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
592 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
593 pub(crate) fn expect_name_value<'arg, Arg>(
594 &mut self,
595 arg: &'arg Arg,
596 span: Span,
597 name: Option<Symbol>,
598 ) -> Option<Arg::Output<'arg>>
599 where
600 Arg: ExpectNameValue,
601 {
602 arg.expect_name_value(self, span, name)
603 }
604
605 /// Assert that an [`ArgParser`] has no args, or emits an error and return `None`.
606 ///
607 /// This is a higher-level (and harder to misuse) wrapper over multiple
608 /// [`ArgParser::as_no_args`]. You may still want to use the lower-level methods for the
609 /// following reasons:
610 ///
611 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
612 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
613 pub(crate) fn expect_no_args<'arg>(&mut self, arg: &'arg ArgParser) -> Option<()> {
614 if let Err(span) = arg.as_no_args() {
615 self.adcx().expected_no_args(span);
616 return None;
617 }
618
619 Some(())
620 }
621
622 /// Asserts that a node is a string literal, or emits an error and return `None`
623 ///
624 /// `arg` must be a reference to any node that may contain a name-value pair, that is:
625 ///
626 /// - [`NameValueParser`],
627 /// - [`MetaItemOrLitParser`],
628 ///
629 /// This is a higher-level (and harder to misuse) wrapper over multiple `as_` methods in the
630 /// [`parser`][crate::parser] module. You may still want to use the lower-level methods for the
631 /// following reasons:
632 ///
633 /// - You want to emit your own diagnostics (for instance, with [`SharedContext::emit_err`]).
634 /// - The attribute can be parsed in multiple ways and it does not make sense to emit an error.
635 pub(crate) fn expect_string_literal<'arg, Arg>(&mut self, arg: &'arg Arg) -> Option<Symbol>
636 where
637 Arg: ExpectStringLiteral,
638 {
639 arg.expect_string_literal(self)
640 }
641}
642
643pub(crate) trait ExpectNameValue {
644 type Output<'a>
645 where
646 Self: 'a;
647
648 fn expect_name_value<'a, 'f, 'sess>(
649 &'a self,
650 cx: &mut AcceptContext<'f, 'sess>,
651 span: Span,
652 name: Option<Symbol>,
653 ) -> Option<Self::Output<'a>>;
654}
655
656impl ExpectNameValue for MetaItemOrLitParser {
657 type Output<'a> = (Ident, &'a NameValueParser);
658
659 fn expect_name_value<'a, 'f, 'sess>(
660 &'a self,
661 cx: &mut AcceptContext<'f, 'sess>,
662 span: Span,
663 name: Option<Symbol>,
664 ) -> Option<Self::Output<'a>> {
665 let Some(meta_item) = self.meta_item() else {
666 cx.adcx().expected_name_value(self.span(), name);
667 return None;
668 };
669
670 meta_item.expect_name_value(cx, span, name)
671 }
672}
673
674impl ExpectNameValue for MetaItemParser {
675 type Output<'a> = (Ident, &'a NameValueParser);
676
677 fn expect_name_value<'a, 'f, 'sess>(
678 &'a self,
679 cx: &mut AcceptContext<'f, 'sess>,
680 _span: Span, // Not needed: `MetaItemOrLitParser` carry its own span.
681 name: Option<Symbol>,
682 ) -> Option<Self::Output<'a>> {
683 let word = self.path().word();
684 let arg = self.args().as_name_value();
685
686 if word.is_none() {
687 cx.adcx().expected_identifier(self.path().span());
688 }
689
690 if arg.is_none() {
691 cx.adcx().expected_name_value(self.span(), name);
692 }
693
694 word.zip(arg)
695 }
696}
697
698impl ExpectNameValue for ArgParser {
699 type Output<'a> = &'a NameValueParser;
700
701 fn expect_name_value<'a, 'f, 'sess>(
702 &'a self,
703 cx: &mut AcceptContext<'f, 'sess>,
704 span: Span,
705 name: Option<Symbol>,
706 ) -> Option<Self::Output<'a>> {
707 let Some(nv) = self.as_name_value() else {
708 cx.adcx().expected_name_value(span, name);
709 return None;
710 };
711
712 Some(nv)
713 }
714}
715
716pub(crate) trait ExpectStringLiteral {
717 fn expect_string_literal<'f, 'sess>(&self, cx: &mut AcceptContext<'f, 'sess>)
718 -> Option<Symbol>;
719}
720
721impl ExpectStringLiteral for NameValueParser {
722 fn expect_string_literal<'f, 'sess>(
723 &self,
724 cx: &mut AcceptContext<'f, 'sess>,
725 ) -> Option<Symbol> {
726 let value = self.value_as_str();
727 if value.is_none() {
728 cx.adcx().expected_string_literal(self.value_span, Some(self.value_as_lit()));
729 }
730 value
731 }
732}
733
734impl ExpectStringLiteral for MetaItemOrLitParser {
735 fn expect_string_literal<'f, 'sess>(
736 &self,
737 cx: &mut AcceptContext<'f, 'sess>,
738 ) -> Option<Symbol> {
739 let Some(lit) = self.as_lit() else {
740 cx.adcx().expected_string_literal(self.span(), None);
741 return None;
742 };
743
744 let str = lit.value_as_str();
745
746 if str.is_none() {
747 cx.adcx().expected_string_literal(self.span(), Some(lit));
748 }
749
750 str
751 }
752}
753
754impl<'f, 'sess> Deref for AcceptContext<'f, 'sess> {
755 type Target = SharedContext<'f, 'sess>;
756
757 fn deref(&self) -> &Self::Target {
758 &self.shared
759 }
760}
761
762impl DerefMut for AcceptContext<'_, '_> {
763 fn deref_mut(&mut self) -> &mut Self::Target {
764 &mut self.shared
765 }
766}
767
768/// Context given to every attribute parser during finalization.
769///
770/// Gives [`AttributeParser`](crate::attributes::AttributeParser)s enough information to create
771/// errors, for example.
772pub struct SharedContext<'p, 'sess> {
773 /// The parse context, gives access to the session and the
774 /// diagnostics context.
775 pub(crate) cx: &'p mut AttributeParser<'sess>,
776 /// The span of the syntactical component this attribute was applied to
777 pub(crate) target_span: Span,
778 pub(crate) target: rustc_hir::Target,
779
780 pub(crate) emit_lint: &'p mut dyn FnMut(LintId, MultiSpan, EmitAttribute),
781
782 /// This atomic bool keeps track of whether any lint has been emitted.
783 /// This is used for the arguments-used check.
784 #[cfg(debug_assertions)]
785 pub(crate) has_lint_been_emitted: AtomicBool,
786}
787
788/// Context given to every attribute parser during finalization.
789///
790/// Gives [`AttributeParser`](crate::attributes::AttributeParser)s enough information to create
791/// errors, for example.
792pub(crate) struct FinalizeContext<'p, 'sess> {
793 pub(crate) shared: SharedContext<'p, 'sess>,
794
795 /// A list of all attribute on this syntax node.
796 ///
797 /// Useful for compatibility checks with other attributes in [`finalize`](crate::attributes::AttributeParser::finalize)
798 ///
799 /// Usually, you should use normal attribute parsing logic instead,
800 /// especially when making a *denylist* of other attributes.
801 pub(crate) all_attrs: &'p [RefPathParser<'p>],
802}
803
804impl<'p, 'sess: 'p> Deref for FinalizeContext<'p, 'sess> {
805 type Target = SharedContext<'p, 'sess>;
806
807 fn deref(&self) -> &Self::Target {
808 &self.shared
809 }
810}
811
812impl<'p, 'sess: 'p> DerefMut for FinalizeContext<'p, 'sess> {
813 fn deref_mut(&mut self) -> &mut Self::Target {
814 &mut self.shared
815 }
816}
817
818/// Context given to deferred cross-attribute checks (`finalize_check`).
819///
820/// These checks run *after* every attribute on an item has been finalized, so unlike
821/// [`FinalizeContext`] this context can also inspect the fully parsed attributes via
822/// [`parsed_attrs`](Self::parsed_attrs).
823pub(crate) struct FinalizeCheckContext<'p, 'sess> {
824 pub(crate) shared: SharedContext<'p, 'sess>,
825
826 /// A list of all attribute on this syntax node.
827 ///
828 /// Useful for compatibility checks with other attributes.
829 ///
830 /// Unlike [`parsed_attrs`](Self::parsed_attrs), this only contains the *paths* of the
831 /// attributes.
832 pub(crate) all_attrs: &'p [RefPathParser<'p>],
833
834 /// All attributes that have been parsed on this syntax node.
835 ///
836 /// Unlike [`all_attrs`](Self::all_attrs), this contains the fully parsed attributes.
837 pub(crate) parsed_attrs: &'p [Attribute],
838}
839
840impl<'p, 'sess: 'p> Deref for FinalizeCheckContext<'p, 'sess> {
841 type Target = SharedContext<'p, 'sess>;
842
843 fn deref(&self) -> &Self::Target {
844 &self.shared
845 }
846}
847
848impl<'p, 'sess: 'p> DerefMut for FinalizeCheckContext<'p, 'sess> {
849 fn deref_mut(&mut self) -> &mut Self::Target {
850 &mut self.shared
851 }
852}
853
854impl<'p, 'sess: 'p> Deref for SharedContext<'p, 'sess> {
855 type Target = AttributeParser<'sess>;
856
857 fn deref(&self) -> &Self::Target {
858 self.cx
859 }
860}
861
862impl<'p, 'sess: 'p> DerefMut for SharedContext<'p, 'sess> {
863 fn deref_mut(&mut self) -> &mut Self::Target {
864 self.cx
865 }
866}
867
868#[derive(#[automatically_derived]
impl ::core::cmp::PartialEq for OmitDoc {
#[inline]
fn eq(&self, other: &OmitDoc) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::clone::Clone for OmitDoc {
#[inline]
fn clone(&self) -> OmitDoc { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for OmitDoc { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for OmitDoc {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
OmitDoc::Lower => "Lower",
OmitDoc::Skip => "Skip",
})
}
}Debug)]
869pub enum OmitDoc {
870 Lower,
871 Skip,
872}
873
874#[derive(#[automatically_derived]
impl ::core::marker::Copy for ShouldEmit { }Copy, #[automatically_derived]
impl ::core::clone::Clone for ShouldEmit {
#[inline]
fn clone(&self) -> ShouldEmit {
let _: ::core::clone::AssertParamIsClone<bool>;
let _: ::core::clone::AssertParamIsClone<Recovery>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for ShouldEmit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ShouldEmit::EarlyFatal { also_emit_lints: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"EarlyFatal", "also_emit_lints", &__self_0),
ShouldEmit::ErrorsAndLints { recovery: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"ErrorsAndLints", "recovery", &__self_0),
ShouldEmit::Nothing =>
::core::fmt::Formatter::write_str(f, "Nothing"),
}
}
}Debug)]
875pub enum ShouldEmit {
876 /// The operations will emit errors, and lints, and errors are fatal.
877 ///
878 /// Only relevant when early parsing, in late parsing equivalent to `ErrorsAndLints`.
879 /// Late parsing is never fatal, and instead tries to emit as many diagnostics as possible.
880 EarlyFatal { also_emit_lints: bool },
881 /// The operation will emit errors and lints.
882 /// This is usually what you need.
883 ErrorsAndLints {
884 /// Whether [`ArgParser`] will attempt to recover from errors.
885 ///
886 /// Whether it is allowed to recover from bad input (like an invalid literal). Setting
887 /// this to `Forbidden` will instead return early, and not raise errors except at the top
888 /// level (in [`ArgParser::from_attr_args`]).
889 recovery: Recovery,
890 },
891 /// The operation will *not* emit errors and lints.
892 ///
893 /// The parser can still call `delay_bug`, so you *must* ensure that this operation will also be
894 /// called with `ShouldEmit::ErrorsAndLints`.
895 Nothing,
896}
897
898impl ShouldEmit {
899 pub(crate) fn emit_err(self, diag: Diag<'_>) -> ErrorGuaranteed {
900 match self {
901 ShouldEmit::EarlyFatal { .. } if diag.level() == Level::DelayedBug => diag.emit(),
902 ShouldEmit::EarlyFatal { .. } => diag.upgrade_to_fatal().emit(),
903 ShouldEmit::ErrorsAndLints { .. } => diag.emit(),
904 ShouldEmit::Nothing => diag.delay_as_bug(),
905 }
906 }
907}
908
909/// The interface for issuing argument parsing related diagnostics.
910///
911/// It can be obtained through the [`adcx`](AcceptContext::adcx) method on [`AcceptContext`].
912pub(crate) struct AttributeDiagnosticContext<'a, 'f, 'sess> {
913 ctx: &'a mut AcceptContext<'f, 'sess>,
914 custom_suggestions: Vec<Suggestion>,
915}
916
917impl<'a, 'f, 'sess: 'f> AttributeDiagnosticContext<'a, 'f, 'sess> {
918 fn emit_parse_error(
919 &mut self,
920 mut span: Span,
921 reason: AttributeParseErrorReason<'_>,
922 ) -> ErrorGuaranteed {
923 let suggestions = if self.custom_suggestions.is_empty() {
924 AttributeParseErrorSuggestions::CreatedByTemplate(self.suggestions())
925 } else {
926 AttributeParseErrorSuggestions::CreatedByParser(mem::take(&mut self.custom_suggestions))
927 };
928
929 // If the span is the full attribute (including the `#[`/`]` delimiters) shrink it to
930 // exclude those delimiters, because that's what we want in error messages.
931 if span == self.attr_span {
932 span = self.inner_span;
933 }
934
935 self.emit_err(AttributeParseError {
936 span,
937 inner_span: self.inner_span,
938 template: *self.template,
939 path: self.attr_path.clone(),
940 description: self.parsed_description,
941 reason,
942 suggestions,
943 })
944 }
945
946 /// Adds a custom suggestion to the diagnostic. This also prevents the default (template-based)
947 /// suggestion to be emitted.
948 pub(crate) fn push_suggestion(&mut self, msg: String, span: Span, code: String) -> &mut Self {
949 self.custom_suggestions.push(Suggestion { msg, sp: span, code });
950 self
951 }
952}
953
954/// Helpers that can be used to generate errors during attribute parsing.
955impl<'a, 'f, 'sess: 'f> AttributeDiagnosticContext<'a, 'f, 'sess> {
956 pub(crate) fn expected_integer_literal_in_range(
957 &mut self,
958 span: Span,
959 lower_bound: isize,
960 upper_bound: isize,
961 ) -> ErrorGuaranteed {
962 self.emit_parse_error(
963 span,
964 AttributeParseErrorReason::ExpectedIntegerLiteralInRange { lower_bound, upper_bound },
965 )
966 }
967
968 /// The provided span is used as a fallback in case `args` does not contain any. It should be
969 /// the span of the node that contains `args`.
970 pub(crate) fn expected_list(&mut self, span: Span, args: &ArgParser) -> ErrorGuaranteed {
971 let span = match args {
972 ArgParser::NoArgs => span,
973 ArgParser::List(list) => list.span,
974 ArgParser::NameValue(nv) => nv.args_span(),
975 };
976 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedList)
977 }
978
979 pub(crate) fn expected_list_with_num_args_or_more(
980 &mut self,
981 args: usize,
982 span: Span,
983 ) -> ErrorGuaranteed {
984 self.emit_parse_error(
985 span,
986 AttributeParseErrorReason::ExpectedListWithNumArgsOrMore { args },
987 )
988 }
989
990 pub(crate) fn expected_list_or_no_args(&mut self, span: Span) -> ErrorGuaranteed {
991 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedListOrNoArgs)
992 }
993
994 pub(crate) fn expected_nv_or_no_args(&mut self, span: Span) -> ErrorGuaranteed {
995 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNameValueOrNoArgs)
996 }
997
998 pub(crate) fn expected_non_empty_string_literal(&mut self, span: Span) -> ErrorGuaranteed {
999 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNonEmptyStringLiteral)
1000 }
1001
1002 pub(crate) fn expected_no_args(&mut self, span: Span) -> ErrorGuaranteed {
1003 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNoArgs)
1004 }
1005
1006 /// Emit an error that a `name` was expected here
1007 pub(crate) fn expected_identifier(&mut self, span: Span) -> ErrorGuaranteed {
1008 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedIdentifier)
1009 }
1010
1011 /// Emit an error that a `name = value` pair was expected at this span. The symbol can be given for
1012 /// a nicer error message talking about the specific name that was found lacking a value.
1013 fn expected_name_value(&mut self, span: Span, name: Option<Symbol>) -> ErrorGuaranteed {
1014 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNameValue(name))
1015 }
1016
1017 /// Emit an error that a `name = value` argument is missing in a list of name-value pairs.
1018 pub(crate) fn missing_name_value(&mut self, span: Span, name: Symbol) -> ErrorGuaranteed {
1019 self.emit_parse_error(span, AttributeParseErrorReason::MissingNameValue(name))
1020 }
1021
1022 /// Emit an error that a `name = value` pair was found where that name was already seen.
1023 pub(crate) fn duplicate_key(&mut self, span: Span, key: Symbol) -> ErrorGuaranteed {
1024 self.emit_parse_error(span, AttributeParseErrorReason::DuplicateKey(key))
1025 }
1026
1027 /// An error that should be emitted when a [`MetaItemOrLitParser`]
1028 /// was expected *not* to be a literal, but instead a meta item.
1029 pub(crate) fn expected_not_literal(&mut self, span: Span) -> ErrorGuaranteed {
1030 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedNotLiteral)
1031 }
1032
1033 /// Signals that we expected exactly one argument and that we got either zero or two or more.
1034 /// The `provided_arguments` argument allows distinguishing between "expected an argument here"
1035 /// (when zero arguments are provided) and "expect a single argument here" (when two or more
1036 /// arguments are provided).
1037 pub(crate) fn expected_single_argument(
1038 &mut self,
1039 span: Span,
1040 provided_arguments: usize,
1041 ) -> ErrorGuaranteed {
1042 let reason = if provided_arguments == 0 {
1043 AttributeParseErrorReason::ExpectedArgument
1044 } else {
1045 AttributeParseErrorReason::ExpectedSingleArgument
1046 };
1047
1048 self.emit_parse_error(span, reason)
1049 }
1050
1051 pub(crate) fn expected_at_least_one_argument(&mut self, span: Span) -> ErrorGuaranteed {
1052 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedAtLeastOneArgument)
1053 }
1054
1055 /// Produces an error along the lines of `expected one of [foo, meow]`
1056 pub(crate) fn expected_specific_argument(
1057 &mut self,
1058 span: Span,
1059 possibilities: &[Symbol],
1060 ) -> ErrorGuaranteed {
1061 self.emit_parse_error(
1062 span,
1063 AttributeParseErrorReason::ExpectedSpecificArgument {
1064 possibilities,
1065 strings: false,
1066 list: false,
1067 },
1068 )
1069 }
1070
1071 /// Produces an error along the lines of `expected one of [foo, meow] as an argument`.
1072 /// i.e. slightly different wording to [`expected_specific_argument`](Self::expected_specific_argument).
1073 pub(crate) fn expected_specific_argument_and_list(
1074 &mut self,
1075 span: Span,
1076 possibilities: &[Symbol],
1077 ) -> ErrorGuaranteed {
1078 self.emit_parse_error(
1079 span,
1080 AttributeParseErrorReason::ExpectedSpecificArgument {
1081 possibilities,
1082 strings: false,
1083 list: true,
1084 },
1085 )
1086 }
1087
1088 /// produces an error along the lines of `expected one of ["foo", "meow"]`
1089 pub(crate) fn expected_specific_argument_strings(
1090 &mut self,
1091 span: Span,
1092 possibilities: &[Symbol],
1093 ) -> ErrorGuaranteed {
1094 self.emit_parse_error(
1095 span,
1096 AttributeParseErrorReason::ExpectedSpecificArgument {
1097 possibilities,
1098 strings: true,
1099 list: false,
1100 },
1101 )
1102 }
1103
1104 pub(crate) fn warn_empty_attribute(&mut self, span: Span) {
1105 let attr_path = self.attr_path.to_string();
1106 let valid_without_list = self.template.word;
1107 self.emit_lint(
1108 rustc_session::lint::builtin::UNUSED_ATTRIBUTES,
1109 crate::diagnostics::EmptyAttributeList {
1110 attr_span: span,
1111 attr_path,
1112 valid_without_list,
1113 },
1114 span,
1115 );
1116 }
1117
1118 pub(crate) fn warn_ill_formed_attribute_input(&mut self, lint: &'static Lint) {
1119 self.warn_ill_formed_attribute_input_with_help(lint, None)
1120 }
1121 pub(crate) fn warn_ill_formed_attribute_input_with_help(
1122 &mut self,
1123 lint: &'static Lint,
1124 help: Option<String>,
1125 ) {
1126 let suggestions = self.suggestions();
1127 let span = self.inner_span;
1128 self.emit_lint(
1129 lint,
1130 crate::diagnostics::IllFormedAttributeInput::new(&suggestions, None, help.as_deref()),
1131 span,
1132 );
1133 }
1134
1135 pub(crate) fn suggestions(&self) -> Vec<String> {
1136 self.template.suggestions(self.parsed_description, self.attr_safety, &self.attr_path)
1137 }
1138 /// Error that a string literal was expected.
1139 /// You can optionally give the literal you did find (which you found not to be a string literal)
1140 /// which can make better errors. For example, if the literal was a byte string it will suggest
1141 /// removing the `b` prefix.
1142 pub(crate) fn expected_string_literal(
1143 &mut self,
1144 span: Span,
1145 actual_literal: Option<&MetaItemLit>,
1146 ) -> ErrorGuaranteed {
1147 self.emit_parse_error(
1148 span,
1149 AttributeParseErrorReason::ExpectedStringLiteral {
1150 byte_string: actual_literal.and_then(|i| {
1151 i.kind.is_bytestr().then(|| self.sess().source_map().start_point(i.span))
1152 }),
1153 },
1154 )
1155 }
1156
1157 /// Error that a filename string literal was expected.
1158 pub(crate) fn expected_filename_literal(&mut self, span: Span) {
1159 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedFilenameLiteral);
1160 }
1161
1162 pub(crate) fn expected_integer_literal(&mut self, span: Span) -> ErrorGuaranteed {
1163 self.emit_parse_error(span, AttributeParseErrorReason::ExpectedIntegerLiteral)
1164 }
1165}
1166
1167impl<'f, 'sess: 'f> Deref for AttributeDiagnosticContext<'_, 'f, 'sess> {
1168 type Target = AcceptContext<'f, 'sess>;
1169
1170 fn deref(&self) -> &Self::Target {
1171 self.ctx
1172 }
1173}
1174
1175impl<'f, 'sess: 'f> DerefMut for AttributeDiagnosticContext<'_, 'f, 'sess> {
1176 fn deref_mut(&mut self) -> &mut Self::Target {
1177 self.ctx
1178 }
1179}
1180
1181/// Represents a custom suggestion that an attribute parser can emit.
1182pub(crate) struct Suggestion {
1183 pub(crate) msg: String,
1184 pub(crate) sp: Span,
1185 pub(crate) code: String,
1186}