aboutsummaryrefslogtreecommitdiffstats
path: root/validator_derive/src/quoting.rs
diff options
context:
space:
mode:
Diffstat (limited to 'validator_derive/src/quoting.rs')
-rw-r--r--validator_derive/src/quoting.rs21
1 files changed, 17 insertions, 4 deletions
diff --git a/validator_derive/src/quoting.rs b/validator_derive/src/quoting.rs
index f94d8fc..fa97623 100644
--- a/validator_derive/src/quoting.rs
+++ b/validator_derive/src/quoting.rs
@@ -3,7 +3,7 @@ use syn;
use validator::Validator;
use asserts::{COW_TYPE, NUMBER_TYPES};
-use lit::option_u64_to_tokens;
+use lit::{option_f64_to_tokens, option_u64_to_tokens};
use validation::{FieldValidation, SchemaValidation};
/// Pass around all the information needed for creating a validation
@@ -183,12 +183,25 @@ pub fn quote_range_validation(
let quoted_ident = field_quoter.quote_validator_param();
if let Validator::Range { min, max } = validation.validator {
+ // Can't interpolate None
+ let min_tokens = option_f64_to_tokens(min);
+ let max_tokens = option_f64_to_tokens(max);
+
+ let min_err_param_quoted = if let Some(v) = min {
+ quote!(err.add_param(::std::borrow::Cow::from("min"), &#v);)
+ } else {
+ quote!()
+ };
+ let max_err_param_quoted = if let Some(v) = max {
+ quote!(err.add_param(::std::borrow::Cow::from("max"), &#v);)
+ } else {
+ quote!()
+ };
+
let quoted_error = quote_error(&validation);
- let min_err_param_quoted = quote!(err.add_param(::std::borrow::Cow::from("min"), &#min););
- let max_err_param_quoted = quote!(err.add_param(::std::borrow::Cow::from("max"), &#max););
let quoted = quote!(
if !::validator::validate_range(
- ::validator::Validator::Range {min: #min, max: #max},
+ ::validator::Validator::Range {min: #min_tokens, max: #max_tokens},
#quoted_ident as f64
) {
#quoted_error