diff --git a/rust/psibase-macros-test/services/add-check-init/src/lib.rs b/rust/psibase-macros-test/services/add-check-init/src/lib.rs index 42b596047..6b3395e02 100644 --- a/rust/psibase-macros-test/services/add-check-init/src/lib.rs +++ b/rust/psibase-macros-test/services/add-check-init/src/lib.rs @@ -18,9 +18,15 @@ pub mod service { table.put(&InitRow {}).unwrap(); } - #[pre_action(exclude = "init")] + #[action] + fn init2() { + let table = InitTable::new(); + table.put(&InitRow {}).unwrap(); + } + + #[pre_action(exclude(init, init2))] // #[pre_action(exclude)] - fn check_initialize() { + fn bobs_init() { // name is not important let table = InitTable::new(); check( diff --git a/rust/psibase_macros/psibase-macros-lib/src/service_macro/actions.rs b/rust/psibase_macros/psibase-macros-lib/src/service_macro/actions.rs index 6774a2692..fac3099f2 100644 --- a/rust/psibase_macros/psibase-macros-lib/src/service_macro/actions.rs +++ b/rust/psibase_macros/psibase-macros-lib/src/service_macro/actions.rs @@ -1,7 +1,7 @@ -use darling::{ast::NestedMeta, FromMeta}; +use darling::{ast::NestedMeta, util::PathList, FromMeta}; use proc_macro_error::abort; use quote::{quote, ToTokens}; -use syn::{AttrStyle, Attribute, FnArg, Ident, Item, ItemFn, Meta, Pat, ReturnType}; +use syn::{AttrStyle, Attribute, FnArg, Ident, Item, ItemFn, Meta, Pat, Path, ReturnType}; #[derive(Debug, FromMeta)] #[darling(default)] @@ -192,7 +192,7 @@ pub fn process_action_schema( pub struct PreAction { pub exists: bool, pub fn_name: Option, - pub exclude: Option, + pub exclude: PathList, } impl Default for PreAction { @@ -200,7 +200,7 @@ impl Default for PreAction { PreAction { exists: false, fn_name: None, - exclude: None, + exclude: PathList::from(vec![]), } } } @@ -221,7 +221,7 @@ fn is_pre_action_attr(attr: &Attribute) -> bool { // } #[derive(Debug, FromMeta)] struct PreActionOptions { - exclude: String, // PreActionExclude, + exclude: PathList, } pub fn check_for_pre_action(pre_action_info: &mut PreAction, items: &mut Vec) { @@ -238,7 +238,7 @@ pub fn check_for_pre_action(pre_action_info: &mut PreAction, items: &mut Vec { - // println!("List: {:?}", args); + println!("List: {:?}", args); args.tokens } Meta::Path(args) => panic!("expected list; got path."), @@ -272,7 +272,7 @@ pub fn check_for_pre_action(pre_action_info: &mut PreAction, items: &mut Vec