aboutsummaryrefslogtreecommitdiff
path: root/mingling_macros/src/groupped.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_macros/src/groupped.rs')
-rw-r--r--mingling_macros/src/groupped.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/mingling_macros/src/groupped.rs b/mingling_macros/src/groupped.rs
index 4fd0665..e385812 100644
--- a/mingling_macros/src/groupped.rs
+++ b/mingling_macros/src/groupped.rs
@@ -1,10 +1,7 @@
use proc_macro::TokenStream;
-use proc_macro2::Span;
use quote::quote;
use syn::{Attribute, DeriveInput, Ident, parse_macro_input};
-use crate::DEFAULT_PROGRAM_NAME;
-
/// Parses the `#[group(...)]` attribute to extract the group type
fn parse_group_attribute(attrs: &[Attribute]) -> Option<Ident> {
for attr in attrs {
@@ -25,8 +22,9 @@ pub fn derive_groupped(input: TokenStream) -> TokenStream {
let struct_name = input.ident;
// Parse attributes to find #[group(...)]
- let group_ident = parse_group_attribute(&input.attrs)
- .unwrap_or_else(|| Ident::new(DEFAULT_PROGRAM_NAME, Span::call_site()));
+ let group_ident: proc_macro2::TokenStream = parse_group_attribute(&input.attrs)
+ .map(|ident| quote! { #ident })
+ .unwrap_or_else(crate::default_program_path);
let any_output_convert_impls = proc_macro2::TokenStream::from(build_any_output_convert_impls(
struct_name.clone(),
@@ -56,8 +54,9 @@ pub fn derive_groupped_serialize(input: TokenStream) -> TokenStream {
let struct_name = input_parsed.ident.clone();
// Parse attributes to find #[group(...)]
- let group_ident = parse_group_attribute(&input_parsed.attrs)
- .unwrap_or_else(|| Ident::new(DEFAULT_PROGRAM_NAME, Span::call_site()));
+ let group_ident: proc_macro2::TokenStream = parse_group_attribute(&input_parsed.attrs)
+ .map(|ident| quote! { #ident })
+ .unwrap_or_else(crate::default_program_path);
let any_output_convert_impls = proc_macro2::TokenStream::from(build_any_output_convert_impls(
struct_name.clone(),
@@ -83,7 +82,10 @@ pub fn derive_groupped_serialize(input: TokenStream) -> TokenStream {
expanded.into()
}
-fn build_any_output_convert_impls(struct_name: Ident, group_ident: Ident) -> TokenStream {
+fn build_any_output_convert_impls(
+ struct_name: Ident,
+ group_ident: proc_macro2::TokenStream,
+) -> TokenStream {
quote! {
impl ::std::convert::Into<::mingling::AnyOutput<#group_ident>> for #struct_name {
fn into(self) -> ::mingling::AnyOutput<#group_ident> {