frame_support_procedural/pallet/expand/
validate_unsigned.rs1use crate::{pallet::Def, COUNTER};
19use proc_macro2::TokenStream;
20use quote::quote;
21use syn::{spanned::Spanned, Ident};
22
23pub fn expand_validate_unsigned(def: &mut Def) -> TokenStream {
24 let count = COUNTER.with(|counter| counter.borrow_mut().inc());
25 let macro_ident =
26 Ident::new(&format!("__is_validate_unsigned_part_defined_{}", count), def.item.span());
27
28 let maybe_compile_error = if def.validate_unsigned.is_none() {
29 quote! {
30 compile_error!(concat!(
31 "`",
32 stringify!($pallet_name),
33 "` does not have #[pallet::validate_unsigned] defined, perhaps you should \
34 remove `ValidateUnsigned` from construct_runtime?",
35 ));
36 }
37 } else {
38 TokenStream::new()
39 };
40
41 quote! {
42 #[doc(hidden)]
43 pub mod __substrate_validate_unsigned_check {
44 #[macro_export]
45 #[doc(hidden)]
46 macro_rules! #macro_ident {
47 ($pallet_name:ident) => {
48 #maybe_compile_error
49 }
50 }
51
52 #[doc(hidden)]
53 pub use #macro_ident as is_validate_unsigned_part_defined;
54 }
55 }
56}