diff options
| author | Camelid <camelidcamel@gmail.com> | 2020-06-12 11:31:41 -0700 |
|---|---|---|
| committer | Camelid <camelidcamel@gmail.com> | 2020-06-20 11:12:42 -0700 |
| commit | 1d2acdf8ec1959424be2728fa868e91b3eaeedc6 (patch) | |
| tree | 3f38104eb3ec99153989b691224679e25a75b5e2 /src | |
| parent | e61411673c8e47c504ff36cbc3479c0dd8939309 (diff) | |
| download | rust-1d2acdf8ec1959424be2728fa868e91b3eaeedc6.tar.gz rust-1d2acdf8ec1959424be2728fa868e91b3eaeedc6.zip | |
Use `Vec<Span>` instead of `Option<Vec<Span>>`
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_builtin_macros/asm.rs | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/src/librustc_builtin_macros/asm.rs b/src/librustc_builtin_macros/asm.rs index e98431a2695..8f6b8903d66 100644 --- a/src/librustc_builtin_macros/asm.rs +++ b/src/librustc_builtin_macros/asm.rs @@ -16,7 +16,7 @@ struct AsmArgs { named_args: FxHashMap<Symbol, usize>, reg_args: FxHashSet<usize>, options: ast::InlineAsmOptions, - options_spans: Option<Vec<Span>>, + options_spans: Vec<Span>, } fn parse_args<'a>( @@ -59,7 +59,7 @@ fn parse_args<'a>( named_args: FxHashMap::default(), reg_args: FxHashSet::default(), options: ast::InlineAsmOptions::empty(), - options_spans: None, + options_spans: vec![], }; let mut allow_templates = true; @@ -174,9 +174,9 @@ fn parse_args<'a>( // Validate the order of named, positional & explicit register operands and options. We do // this at the end once we have the full span of the argument available. - if let Some(ref options_spans) = args.options_spans { + if args.options_spans.len() > 0 { ecx.struct_span_err(span, "arguments are not allowed after options") - .span_labels(options_spans.clone(), "previous options") + .span_labels(args.options_spans.clone(), "previous options") .span_label(span, "argument") .emit(); } @@ -227,21 +227,21 @@ fn parse_args<'a>( if args.options.contains(ast::InlineAsmOptions::NOMEM) && args.options.contains(ast::InlineAsmOptions::READONLY) { - let spans = args.options_spans.clone().unwrap(); + let spans = args.options_spans.clone(); ecx.struct_span_err(spans, "the `nomem` and `readonly` options are mutually exclusive") .emit(); } if args.options.contains(ast::InlineAsmOptions::PURE) && args.options.contains(ast::InlineAsmOptions::NORETURN) { - let spans = args.options_spans.clone().unwrap(); + let spans = args.options_spans.clone(); ecx.struct_span_err(spans, "the `pure` and `noreturn` options are mutually exclusive") .emit(); } if args.options.contains(ast::InlineAsmOptions::PURE) && !args.options.intersects(ast::InlineAsmOptions::NOMEM | ast::InlineAsmOptions::READONLY) { - let span = args.options_spans.clone().unwrap(); + let span = args.options_spans.clone(); ecx.struct_span_err( span, "the `pure` option must be combined with either `nomem` or `readonly`", @@ -267,7 +267,7 @@ fn parse_args<'a>( } if args.options.contains(ast::InlineAsmOptions::PURE) && !have_real_output { ecx.struct_span_err( - args.options_spans.clone().unwrap(), + args.options_spans.clone(), "asm with `pure` option must have at least one output", ) .emit(); @@ -314,11 +314,7 @@ fn parse_options<'a>(p: &mut Parser<'a>, args: &mut AsmArgs) -> Result<(), Diagn } let new_span = span_start.to(p.prev_token.span); - if let Some(options_spans) = &mut args.options_spans { - options_spans.push(new_span); - } else { - args.options_spans = Some(vec![new_span]); - } + args.options_spans.push(new_span); Ok(()) } |
