1use proc_macro2::TokenStream;
2use quote::quote;
3
4pub fn wrap_in_const(serde_path: Option<&syn::Path>, code: TokenStream) -> TokenStream {
5 let use_serde = match serde_path {
6 Some(path) => {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "use");
::quote::ToTokens::to_tokens(&path, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "_serde");
::quote::__private::push_semi(&mut _s);
_s
}quote! {
7 use #path as _serde;
8 },
9 None => {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "allow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"unused_extern_crates");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "clippy");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"useless_attribute");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "extern");
::quote::__private::push_ident(&mut _s, "crate");
::quote::__private::push_ident(&mut _s, "serde");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "_serde");
::quote::__private::push_semi(&mut _s);
_s
}quote! {
10 #[allow(unused_extern_crates, clippy::useless_attribute)]
11 extern crate serde as _serde;
12 },
13 };
14
15 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "hidden");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "allow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"non_upper_case_globals");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"unused_attributes");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"unused_qualifications");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "clippy");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "absolute_paths");
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&use_serde, &mut _s);
::quote::__private::push_ident(&mut _s, "_serde");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"__require_serde_not_serde_core");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&code, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
16 #[doc(hidden)]
17 #[allow(
18 non_upper_case_globals,
19 unused_attributes,
20 unused_qualifications,
21 clippy::absolute_paths,
22 )]
23 const _: () = {
24 #use_serde
25
26 _serde::__require_serde_not_serde_core!();
27
28 #code
29 };
30 }
31}