aboutsummaryrefslogtreecommitdiff
path: root/mingling_macros/src/program_setup.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_macros/src/program_setup.rs')
-rw-r--r--mingling_macros/src/program_setup.rs16
1 files changed, 5 insertions, 11 deletions
diff --git a/mingling_macros/src/program_setup.rs b/mingling_macros/src/program_setup.rs
index 57b7e6c..dd32581 100644
--- a/mingling_macros/src/program_setup.rs
+++ b/mingling_macros/src/program_setup.rs
@@ -3,8 +3,6 @@ use quote::quote;
use syn::spanned::Spanned;
use syn::{FnArg, Ident, ItemFn, Pat, PatType, ReturnType, Signature, Type, parse_macro_input};
-use crate::DEFAULT_PROGRAM_NAME;
-
/// Extracts the program parameter from function arguments
fn extract_program_param(sig: &Signature) -> syn::Result<(Pat, Type)> {
// The function should have exactly one parameter
@@ -50,17 +48,13 @@ fn extract_return_type(sig: &Signature) -> syn::Result<()> {
}
pub fn setup_attr(attr: TokenStream, item: TokenStream) -> TokenStream {
- let default_program_ident = crate::default_program_ident();
-
// Parse the attribute arguments (e.g., MyProgram from #[program_setup(MyProgram)])
// If no argument is provided, use ThisProgram
let (program_name, use_crate_prefix) = if attr.is_empty() {
- (
- Ident::new(DEFAULT_PROGRAM_NAME, proc_macro2::Span::call_site()),
- true,
- )
+ (crate::default_program_path(), true)
} else {
- (parse_macro_input!(attr as Ident), false)
+ let ident: Ident = parse_macro_input!(attr as Ident);
+ (quote! { #ident }, false)
};
// Parse the function item
@@ -110,8 +104,8 @@ pub fn setup_attr(attr: TokenStream, item: TokenStream) -> TokenStream {
#[doc(hidden)]
#vis struct #struct_name;
- impl ::mingling::setup::ProgramSetup<#default_program_ident> for #struct_name {
- fn setup(&mut self, program: &mut ::mingling::Program<#default_program_ident>) {
+ impl ::mingling::setup::ProgramSetup<#program_name> for #struct_name {
+ fn setup(&mut self, program: &mut ::mingling::Program<#program_name>) {
// Call the original function with the actual Program type
#fn_name(program);
}