about summary refs log tree commit diff
path: root/compiler/rustc_errors/src
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_errors/src')
-rw-r--r--compiler/rustc_errors/src/diagnostic.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/compiler/rustc_errors/src/diagnostic.rs b/compiler/rustc_errors/src/diagnostic.rs
index b37aa4cf7c0..026b0222665 100644
--- a/compiler/rustc_errors/src/diagnostic.rs
+++ b/compiler/rustc_errors/src/diagnostic.rs
@@ -519,10 +519,13 @@ impl Diagnostic {
 
     /// Helper for pushing to `self.suggestions`, if available (not disable).
     fn push_suggestion(&mut self, suggestion: CodeSuggestion) {
-        let in_derive = suggestion
-            .substitutions
-            .iter()
-            .any(|subst| subst.parts.iter().any(|part| part.span.in_derive_expansion()));
+        let in_derive = suggestion.substitutions.iter().any(|subst| {
+            subst.parts.iter().any(|part| {
+                let span = part.span;
+                let call_site = span.ctxt().outer_expn_data().call_site;
+                span.in_derive_expansion() && span.overlaps_or_adjacent(call_site)
+            })
+        });
         if in_derive {
             // Ignore if spans is from derive macro.
             return;