about summary refs log tree commit diff
path: root/compiler/rustc_resolve
diff options
context:
space:
mode:
authorDeadbeef <ent3rm4n@gmail.com>2022-07-07 04:57:01 +0000
committerDeadbeef <ent3rm4n@gmail.com>2022-07-07 04:57:01 +0000
commit2f0ccdfbba1a721844a7ba83d6e87e12728d19c3 (patch)
treed2f5c3dc99db46aebcc130e39c1b0e624fe5a40a /compiler/rustc_resolve
parent8824d131619e58a38bde8bcf56401629b91a204a (diff)
downloadrust-2f0ccdfbba1a721844a7ba83d6e87e12728d19c3.tar.gz
rust-2f0ccdfbba1a721844a7ba83d6e87e12728d19c3.zip
suggest adding a derive for #[default] applied to variants
Diffstat (limited to 'compiler/rustc_resolve')
-rw-r--r--compiler/rustc_resolve/src/diagnostics.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs
index 0f58206eee9..ec9ae63ca36 100644
--- a/compiler/rustc_resolve/src/diagnostics.rs
+++ b/compiler/rustc_resolve/src/diagnostics.rs
@@ -1499,10 +1499,16 @@ impl<'a> Resolver<'a> {
             && let ModuleKind::Def(DefKind::Enum, def_id, _) = parent_scope.module.kind
             && let Some(span) = self.opt_span(def_id)
         {
-            err.span_help(
-                self.session.source_map().guess_head_span(span),
-                "consider adding `#[derive(Default)]` to this enum",
-            );
+            let source_map = self.session.source_map();
+            let head_span = source_map.guess_head_span(span);
+            if let Ok(head) = source_map.span_to_snippet(head_span) {
+                err.span_suggestion(head_span, "consider adding a derive", format!("#[derive(Default)]\n{head}"), Applicability::MaybeIncorrect);
+            } else {
+                err.span_help(
+                    head_span,
+                    "consider adding `#[derive(Default)]` to this enum",
+                );
+            }
         }
         for ns in [Namespace::MacroNS, Namespace::TypeNS, Namespace::ValueNS] {
             if let Ok(binding) = self.early_resolve_ident_in_lexical_scope(