Skip to content

Commit 2f0ccdf

Browse files
committed
suggest adding a derive for #[default] applied to variants
1 parent 8824d13 commit 2f0ccdf

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

compiler/rustc_resolve/src/diagnostics.rs

+10-4
Original file line numberDiff line numberDiff line change
@@ -1499,10 +1499,16 @@ impl<'a> Resolver<'a> {
14991499
&& let ModuleKind::Def(DefKind::Enum, def_id, _) = parent_scope.module.kind
15001500
&& let Some(span) = self.opt_span(def_id)
15011501
{
1502-
err.span_help(
1503-
self.session.source_map().guess_head_span(span),
1504-
"consider adding `#[derive(Default)]` to this enum",
1505-
);
1502+
let source_map = self.session.source_map();
1503+
let head_span = source_map.guess_head_span(span);
1504+
if let Ok(head) = source_map.span_to_snippet(head_span) {
1505+
err.span_suggestion(head_span, "consider adding a derive", format!("#[derive(Default)]\n{head}"), Applicability::MaybeIncorrect);
1506+
} else {
1507+
err.span_help(
1508+
head_span,
1509+
"consider adding `#[derive(Default)]` to this enum",
1510+
);
1511+
}
15061512
}
15071513
for ns in [Namespace::MacroNS, Namespace::TypeNS, Namespace::ValueNS] {
15081514
if let Ok(binding) = self.early_resolve_ident_in_lexical_scope(

src/test/ui/enum/suggest-default-attribute.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
pub enum Test { //~ HELP consider adding `#[derive(Default)]` to this enum
1+
pub enum Test { //~ HELP consider adding a derive
22
#[default]
33
//~^ ERROR cannot find attribute `default` in this scope
44
First,

src/test/ui/enum/suggest-default-attribute.stderr

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ error: cannot find attribute `default` in this scope
44
LL | #[default]
55
| ^^^^^^^
66
|
7-
help: consider adding `#[derive(Default)]` to this enum
8-
--> $DIR/suggest-default-attribute.rs:1:1
7+
help: consider adding a derive
8+
|
9+
LL + #[derive(Default)]
10+
LL ~ pub enum Test {
911
|
10-
LL | pub enum Test {
11-
| ^^^^^^^^^^^^^
1212

1313
error: aborting due to previous error
1414

0 commit comments

Comments
 (0)