for (symbol, (index, span)) in names {
if !used_argument_names.contains(symbol.as_str()) {
let msg = format!("named argument `{}` is not used by name", symbol.as_str());
- let arg_span = cx.arg_spans.get(index).copied().unwrap_or(span);
+ let arg_span = cx.arg_spans.get(index).copied();
cx.ecx.buffered_early_lint.push(BufferedEarlyLint {
span: MultiSpan::from_span(span),
msg: msg.clone(),
},
BuiltinLintDiagnostics::NamedArgumentUsedPositionally(positional_arg, named_arg, name) => {
db.span_label(named_arg, "this named argument is only referred to by position in formatting string");
- let msg = format!("this formatting argument uses named argument `{}` by position", name);
- db.span_label(positional_arg, msg);
- db.span_suggestion_verbose(
- positional_arg,
- "use the named argument by name to avoid ambiguity",
- format!("{{{}}}", name),
- Applicability::MaybeIncorrect,
- );
-
+ if let Some(positional_arg) = positional_arg {
+ let msg = format!("this formatting argument uses named argument `{}` by position", name);
+ db.span_label(positional_arg, msg);
+ db.span_suggestion_verbose(
+ positional_arg,
+ "use the named argument by name to avoid ambiguity",
+ format!("{{{}}}", name),
+ Applicability::MaybeIncorrect,
+ );
+ }
}
}
// Rewrap `db`, and pass control to the user.
/// If true, the lifetime will be fully elided.
use_span: Option<(Span, bool)>,
},
- NamedArgumentUsedPositionally(Span, Span, String),
+ NamedArgumentUsedPositionally(Option<Span>, Span, String),
}
/// Lints that are buffered up early on in the `Session` before the