aboutsummaryrefslogtreecommitdiff
path: root/macros/src/factory/macro_args.rs
diff options
context:
space:
mode:
Diffstat (limited to 'macros/src/factory/macro_args.rs')
-rw-r--r--macros/src/factory/macro_args.rs32
1 files changed, 21 insertions, 11 deletions
diff --git a/macros/src/factory/macro_args.rs b/macros/src/factory/macro_args.rs
index 8acbdb6..cb2cbc9 100644
--- a/macros/src/factory/macro_args.rs
+++ b/macros/src/factory/macro_args.rs
@@ -19,12 +19,12 @@ impl Parse for FactoryMacroArgs
let flags = Punctuated::<MacroFlag, Token![,]>::parse_terminated(input)?;
for flag in &flags {
- let flag_str = flag.flag.to_string();
+ let name = flag.name().to_string();
- if !FACTORY_MACRO_FLAGS.contains(&flag_str.as_str()) {
+ if !FACTORY_MACRO_FLAGS.contains(&name.as_str()) {
return Err(input.error(format!(
"Unknown flag '{}'. Expected one of [ {} ]",
- flag_str,
+ name,
FACTORY_MACRO_FLAGS.join(",")
)));
}
@@ -32,7 +32,7 @@ impl Parse for FactoryMacroArgs
let flag_names = flags
.iter()
- .map(|flag| flag.flag.to_string())
+ .map(|flag| flag.name().to_string())
.collect::<Vec<_>>();
if let Some((dupe_flag_name, _)) = flag_names.iter().find_duplicate() {
@@ -50,9 +50,10 @@ mod tests
use proc_macro2::Span;
use quote::{format_ident, quote};
- use syn::{parse2, LitBool};
+ use syn::{parse2, Lit, LitBool};
use super::*;
+ use crate::macro_flag::MacroFlagValue;
#[test]
fn can_parse_with_single_flag() -> Result<(), Box<dyn Error>>
@@ -66,8 +67,11 @@ mod tests
assert_eq!(
factory_macro_args.flags,
Punctuated::from_iter(vec![MacroFlag {
- flag: format_ident!("async"),
- is_on: LitBool::new(true, Span::call_site())
+ name: format_ident!("async"),
+ value: MacroFlagValue::Literal(Lit::Bool(LitBool::new(
+ true,
+ Span::call_site()
+ )))
}])
);
@@ -87,12 +91,18 @@ mod tests
factory_macro_args.flags,
Punctuated::from_iter(vec![
MacroFlag {
- flag: format_ident!("async"),
- is_on: LitBool::new(true, Span::call_site())
+ name: format_ident!("async"),
+ value: MacroFlagValue::Literal(Lit::Bool(LitBool::new(
+ true,
+ Span::call_site()
+ )))
},
MacroFlag {
- flag: format_ident!("threadsafe"),
- is_on: LitBool::new(false, Span::call_site())
+ name: format_ident!("threadsafe"),
+ value: MacroFlagValue::Literal(Lit::Bool(LitBool::new(
+ false,
+ Span::call_site()
+ )))
}
])
);