]> git.lizzy.rs Git - rust.git/commitdiff
Only suggest if span is not erroneous
authorMichael Goulet <michael@errs.io>
Fri, 15 Jul 2022 17:32:15 +0000 (17:32 +0000)
committerMichael Goulet <michael@errs.io>
Fri, 15 Jul 2022 17:32:34 +0000 (17:32 +0000)
compiler/rustc_builtin_macros/src/format.rs
compiler/rustc_lint/src/context.rs
compiler/rustc_lint_defs/src/lib.rs

index d5eb8d4eeb9a831419adbabce5ad4c7782e0580b..3b7e2102ffa9b6b47ace8dd62cc5ba0e890642aa 100644 (file)
@@ -997,7 +997,7 @@ fn lint_named_arguments_used_positionally(
     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(),
index 50e9383cacc12519dc4b6198b3f446b1901fc267..b4b472fe2df78d9bfe12297f0df3939711bb664c 100644 (file)
@@ -858,15 +858,16 @@ fn lookup_with_diagnostics(
                 },
                 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.
index 1bc7e7de66040e91a528d77b6df20a5abbc98608..4fd57ed8533795502ec2a652822b6d0939a92a14 100644 (file)
@@ -467,7 +467,7 @@ pub enum BuiltinLintDiagnostics {
         /// 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