Lines Matching full:errors
6 crate::errors::Errors,
64 pub fn parse(errors: &Errors, field: &syn::Field) -> Self { in parse() argument
69 parse_attr_doc(errors, attr, &mut this.description); in parse()
73 let ml = if let Some(ml) = argh_attr_to_meta_list(errors, attr) { in parse()
82 if let Some(m) = errors.expect_meta_name_value(&meta) { in parse()
83 this.parse_attr_arg_name(errors, m); in parse()
86 if let Some(m) = errors.expect_meta_name_value(&meta) { in parse()
87 this.parse_attr_default(errors, m); in parse()
90 if let Some(m) = errors.expect_meta_name_value(&meta) { in parse()
91 parse_attr_description(errors, m, &mut this.description); in parse()
94 if let Some(m) = errors.expect_meta_list(&meta) { in parse()
95 this.parse_attr_from_str_fn(errors, m); in parse()
98 if let Some(m) = errors.expect_meta_name_value(&meta) { in parse()
99 this.parse_attr_long(errors, m); in parse()
102 parse_attr_field_type(errors, &meta, FieldKind::Option, &mut this.field_type); in parse()
104 if let Some(m) = errors.expect_meta_name_value(&meta) { in parse()
105 this.parse_attr_short(errors, m); in parse()
109 errors, in parse()
115 parse_attr_field_type(errors, &meta, FieldKind::Switch, &mut this.field_type); in parse()
118 errors, in parse()
128 errors.err( in parse()
143 FieldKind::SubCommand | FieldKind::Switch => errors.err( in parse()
153 (Some(greedy), Some(_)) => errors.err( in parse()
162 check_option_description(errors, d.content.value().trim(), d.content.span()); in parse()
168 fn parse_attr_from_str_fn(&mut self, errors: &Errors, m: &syn::MetaList) { in parse_attr_from_str_fn() argument
169 parse_attr_fn_name(errors, m, "from_str_fn", &mut self.from_str_fn) in parse_attr_from_str_fn()
172 fn parse_attr_default(&mut self, errors: &Errors, m: &syn::MetaNameValue) { in parse_attr_default() argument
173 parse_attr_single_string(errors, m, "default", &mut self.default); in parse_attr_default()
176 fn parse_attr_arg_name(&mut self, errors: &Errors, m: &syn::MetaNameValue) { in parse_attr_arg_name() argument
177 parse_attr_single_string(errors, m, "arg_name", &mut self.arg_name); in parse_attr_arg_name()
180 fn parse_attr_long(&mut self, errors: &Errors, m: &syn::MetaNameValue) { in parse_attr_long() argument
181 parse_attr_single_string(errors, m, "long", &mut self.long); in parse_attr_long()
184 check_long_name(errors, long, &value); in parse_attr_long()
187 fn parse_attr_short(&mut self, errors: &Errors, m: &syn::MetaNameValue) { in parse_attr_short() argument
189 errors.duplicate_attrs("short", first, m); in parse_attr_short()
190 } else if let Some(lit_char) = errors.expect_lit_char(&m.value) { in parse_attr_short()
193 errors.err(lit_char, "Short names must be ASCII"); in parse_attr_short()
199 pub(crate) fn check_long_name(errors: &Errors, spanned: &impl syn::spanned::Spanned, value: &str) { in check_long_name() argument
201 errors.err(spanned, "Long names must be ASCII"); in check_long_name()
204 errors.err(spanned, "Long names must be lowercase"); in check_long_name()
209 errors: &Errors, in parse_attr_fn_name() argument
215 errors.duplicate_attrs(attr_name, first, m); in parse_attr_fn_name()
218 *slot = errors.ok(m.parse_args()); in parse_attr_fn_name()
222 errors: &Errors, in parse_attr_field_type() argument
227 if let Some(path) = errors.expect_meta_word(meta) { in parse_attr_field_type()
229 errors.duplicate_attrs("field kind", &first.ident, path); in parse_attr_field_type()
253 errors: &Errors, in argh_attr_to_meta_list() argument
259 let ml = errors.expect_meta_list(&attr.meta)?; in argh_attr_to_meta_list()
260 errors.ok(ml.parse_args_with( in argh_attr_to_meta_list()
278 pub fn parse(errors: &Errors, derive_input: &syn::DeriveInput) -> Self { in parse() argument
283 parse_attr_doc(errors, attr, &mut this.description); in parse()
287 let ml = if let Some(ml) = argh_attr_to_meta_list(errors, attr) { in parse()
296 if let Some(m) = errors.expect_meta_name_value(&meta) { in parse()
297 parse_attr_description(errors, m, &mut this.description); in parse()
300 if let Some(m) = errors.expect_meta_list(&meta) { in parse()
301 this.parse_attr_error_code(errors, m); in parse()
304 if let Some(m) = errors.expect_meta_name_value(&meta) { in parse()
305 this.parse_attr_example(errors, m); in parse()
308 if let Some(m) = errors.expect_meta_name_value(&meta) { in parse()
309 this.parse_attr_name(errors, m); in parse()
312 if let Some(m) = errors.expect_meta_name_value(&meta) { in parse()
313 this.parse_attr_note(errors, m); in parse()
316 if let Some(ident) = errors.expect_meta_word(&meta).and_then(|p| p.get_ident()) in parse()
318 this.parse_attr_subcommand(errors, ident); in parse()
321 errors.err( in parse()
333 this.check_error_codes(errors); in parse()
339 fn check_error_codes(&self, errors: &Errors) { in check_error_codes() argument
346 errors.push(e); in check_error_codes()
351 errors.err(lit_int, "Error code out of range for `i32`"); in check_error_codes()
357 errors.err(lit_int, &format!("Duplicate error code {}", value)); in check_error_codes()
358 errors.err( in check_error_codes()
370 fn parse_attr_error_code(&mut self, errors: &Errors, ml: &syn::MetaList) { in parse_attr_error_code() argument
371 errors.ok(ml.parse_args_with(|input: syn::parse::ParseStream| { in parse_attr_error_code()
376 (errors.expect_lit_int(&err_code), errors.expect_lit_str(&err_msg)) in parse_attr_error_code()
384 fn parse_attr_example(&mut self, errors: &Errors, m: &syn::MetaNameValue) { in parse_attr_example() argument
385 parse_attr_multi_string(errors, m, &mut self.examples) in parse_attr_example()
388 fn parse_attr_name(&mut self, errors: &Errors, m: &syn::MetaNameValue) { in parse_attr_name() argument
389 parse_attr_single_string(errors, m, "name", &mut self.name); in parse_attr_name()
392 errors.err(name, "Custom `help` commands are not supported."); in parse_attr_name()
397 fn parse_attr_note(&mut self, errors: &Errors, m: &syn::MetaNameValue) { in parse_attr_note() argument
398 parse_attr_multi_string(errors, m, &mut self.notes) in parse_attr_note()
401 fn parse_attr_subcommand(&mut self, errors: &Errors, ident: &syn::Ident) { in parse_attr_subcommand() argument
403 errors.duplicate_attrs("subcommand", first, ident); in parse_attr_subcommand()
418 pub fn parse(errors: &Errors, variant: &syn::Variant) -> Self { in parse() argument
430 err_unused_enum_attr(errors, attr); in parse()
436 let ml = if let Some(ml) = argh_attr_to_meta_list(errors, attr) { in parse()
446 errors.duplicate_attrs("dynamic", prev, &meta); in parse()
448 this.is_dynamic = errors.expect_meta_word(&meta).cloned(); in parse()
451 errors.err( in parse()
464 fn check_option_description(errors: &Errors, desc: &str, span: Span) { in check_option_description() argument
472 errors.err_span(span, "Descriptions must begin with a lowercase letter"); in check_option_description()
478 errors: &Errors, in parse_attr_single_string() argument
484 errors.duplicate_attrs(name, first, m); in parse_attr_single_string()
485 } else if let Some(lit_str) = errors.expect_lit_str(&m.value) { in parse_attr_single_string()
490 fn parse_attr_multi_string(errors: &Errors, m: &syn::MetaNameValue, list: &mut Vec<syn::LitStr>) { in parse_attr_multi_string() argument
491 if let Some(lit_str) = errors.expect_lit_str(&m.value) { in parse_attr_multi_string()
496 fn parse_attr_doc(errors: &Errors, attr: &syn::Attribute, slot: &mut Option<Description>) { in parse_attr_doc() argument
497 let nv = if let Some(nv) = errors.expect_meta_name_value(&attr.meta) { in parse_attr_doc()
508 if let Some(lit_str) = errors.expect_lit_str(&nv.value) { in parse_attr_doc()
520 fn parse_attr_description(errors: &Errors, m: &syn::MetaNameValue, slot: &mut Option<Description>) { in parse_attr_description() argument
522 if let Some(lit_str) = errors.expect_lit_str(&m.value) { lit_str } else { return }; in parse_attr_description()
527 errors.duplicate_attrs("description", &description.content, lit_str); in parse_attr_description()
536 pub fn check_enum_type_attrs(errors: &Errors, type_attrs: &TypeAttrs, type_span: &Span) { in check_enum_type_attrs() argument
541 errors.err_span( in check_enum_type_attrs()
552 err_unused_enum_attr(errors, name); in check_enum_type_attrs()
556 err_unused_enum_attr(errors, &description.content); in check_enum_type_attrs()
560 err_unused_enum_attr(errors, example); in check_enum_type_attrs()
563 err_unused_enum_attr(errors, note); in check_enum_type_attrs()
566 err_unused_enum_attr(errors, &err_code.0); in check_enum_type_attrs()
570 fn err_unused_enum_attr(errors: &Errors, location: &impl syn::spanned::Spanned) { in err_unused_enum_attr() argument
571 errors.err( in err_unused_enum_attr()