Merge branch 'master' into validate
This commit is contained in:
commit
b68132f17d
31 changed files with 440 additions and 143 deletions
|
@ -13,6 +13,10 @@ use syn::Meta::{List, NameValue};
|
|||
use syn::MetaNameValue;
|
||||
use syn::NestedMeta::{Lit, Meta};
|
||||
|
||||
// FIXME using the same struct for containers+variants+fields means that
|
||||
// with/schema_with are accepted (but ignored) on containers, and
|
||||
// repr/crate_name are accepted (but ignored) on variants and fields etc.
|
||||
|
||||
#[derive(Debug, Default)]
|
||||
pub struct Attrs {
|
||||
pub with: Option<WithAttr>,
|
||||
|
@ -21,6 +25,7 @@ pub struct Attrs {
|
|||
pub deprecated: bool,
|
||||
pub examples: Vec<syn::Path>,
|
||||
pub repr: Option<syn::Type>,
|
||||
pub crate_name: Option<syn::Path>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
|
@ -125,6 +130,16 @@ impl Attrs {
|
|||
}
|
||||
}
|
||||
|
||||
Meta(NameValue(m)) if m.path.is_ident("crate") && attr_type == "schemars" => {
|
||||
if let Ok(p) = parse_lit_into_path(errors, attr_type, "crate", &m.lit) {
|
||||
if self.crate_name.is_some() {
|
||||
duplicate_error(m)
|
||||
} else {
|
||||
self.crate_name = Some(p)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_ if ignore_errors => {}
|
||||
|
||||
Meta(meta_item) => {
|
||||
|
|
|
@ -125,11 +125,11 @@ impl ValidationAttrs {
|
|||
// `schema_object` - the SchemaObject for the struct that contains this field.
|
||||
let mut statements = Vec::new();
|
||||
|
||||
if self.required {
|
||||
statements.push(quote! {
|
||||
schema_object.object().required.insert(#field_name.to_owned());
|
||||
});
|
||||
}
|
||||
// if self.required {
|
||||
// statements.push(quote! {
|
||||
// schema_object.object().required.insert(#field_name.to_owned());
|
||||
// });
|
||||
// }
|
||||
|
||||
let mut array_validation = Vec::new();
|
||||
let mut number_validation = Vec::new();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue