]> git.proxmox.com Git - rustc.git/blame - vendor/serde_derive/src/dummy.rs
Merge 1.70 into proxmox/bookworm
[rustc.git] / vendor / serde_derive / src / dummy.rs
CommitLineData
f035d41b
XL
1use proc_macro2::{Ident, TokenStream};
2use quote::format_ident;
f9f354fc
XL
3
4use syn;
5use try;
6
7pub fn wrap_in_const(
8 serde_path: Option<&syn::Path>,
9 trait_: &str,
10 ty: &Ident,
11 code: TokenStream,
12) -> TokenStream {
13 let try_replacement = try::replacement();
14
064997fb 15 let dummy_const = if cfg!(no_underscore_consts) {
f035d41b 16 format_ident!("_IMPL_{}_FOR_{}", trait_, unraw(ty))
064997fb
FG
17 } else {
18 format_ident!("_")
f035d41b 19 };
f9f354fc
XL
20
21 let use_serde = match serde_path {
22 Some(path) => quote! {
23 use #path as _serde;
24 },
25 None => quote! {
17df50a5 26 #[allow(unused_extern_crates, clippy::useless_attribute)]
f9f354fc
XL
27 extern crate serde as _serde;
28 },
29 };
30
31 quote! {
32 #[doc(hidden)]
33 #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
34 const #dummy_const: () = {
35 #use_serde
36 #try_replacement
37 #code
38 };
39 }
40}
41
f9f354fc 42fn unraw(ident: &Ident) -> String {
353b0b11 43 ident.to_string().trim_start_matches("r#").to_owned()
f9f354fc 44}