about summary refs log tree commit diff
path: root/compiler/rustc_parse
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_parse')
-rw-r--r--compiler/rustc_parse/messages.ftl6
-rw-r--r--compiler/rustc_parse/src/errors.rs10
-rw-r--r--compiler/rustc_parse/src/parser/item.rs29
3 files changed, 18 insertions, 27 deletions
diff --git a/compiler/rustc_parse/messages.ftl b/compiler/rustc_parse/messages.ftl
index 7970d8d552f..3a21eea3d0a 100644
--- a/compiler/rustc_parse/messages.ftl
+++ b/compiler/rustc_parse/messages.ftl
@@ -869,10 +869,10 @@ parse_trait_alias_cannot_be_auto = trait aliases cannot be `auto`
 parse_trait_alias_cannot_be_const = trait aliases cannot be `const`
 parse_trait_alias_cannot_be_unsafe = trait aliases cannot be `unsafe`
 
-parse_trait_impl_modifier_in_inherent_impl = inherent impls cannot be {$annotation}
-    .because = {$annotation} because of this
+parse_trait_impl_modifier_in_inherent_impl = inherent impls cannot be {$modifier_name}
+    .because = {$modifier_name} because of this
     .type = inherent impl for this type
-    .only_trait = only trait implementations may be annotated with {$annotation}
+    .note = only trait implementations may be annotated with `{$modifier}`
 
 parse_transpose_dyn_or_impl = `for<...>` expected after `{$kw}`, not before
     .suggestion = move `{$kw}` before the `for<...>`
diff --git a/compiler/rustc_parse/src/errors.rs b/compiler/rustc_parse/src/errors.rs
index 2a704ee61ec..a07d0606fd0 100644
--- a/compiler/rustc_parse/src/errors.rs
+++ b/compiler/rustc_parse/src/errors.rs
@@ -73,16 +73,16 @@ pub(crate) struct BadQPathStage2 {
 
 #[derive(Diagnostic)]
 #[diag(parse_trait_impl_modifier_in_inherent_impl)]
-pub(crate) struct TraitImplModifierInInherentImpl<'a> {
+#[note]
+pub(crate) struct TraitImplModifierInInherentImpl {
     #[primary_span]
     pub span: Span,
+    pub modifier: &'static str,
+    pub modifier_name: &'static str,
     #[label(parse_because)]
-    pub annotation_span: Span,
-    pub annotation: &'a str,
+    pub modifier_span: Span,
     #[label(parse_type)]
     pub self_ty: Span,
-    #[note(parse_only_trait)]
-    pub only_trait: bool,
 }
 
 #[derive(Subdiagnostic)]
diff --git a/compiler/rustc_parse/src/parser/item.rs b/compiler/rustc_parse/src/parser/item.rs
index 96d7120e21e..75cb103d5d6 100644
--- a/compiler/rustc_parse/src/parser/item.rs
+++ b/compiler/rustc_parse/src/parser/item.rs
@@ -667,36 +667,27 @@ impl<'a> Parser<'a> {
             }
             None => {
                 let self_ty = ty_first;
-                let error = |annotation_span, annotation, only_trait| {
-                    errors::TraitImplModifierInInherentImpl {
+                let error = |modifier, modifier_name, modifier_span| {
+                    self.dcx().create_err(errors::TraitImplModifierInInherentImpl {
                         span: self_ty.span,
-                        annotation_span,
-                        annotation,
+                        modifier,
+                        modifier_name,
+                        modifier_span,
                         self_ty: self_ty.span,
-                        only_trait,
-                    }
+                    })
                 };
 
                 if let Safety::Unsafe(span) = safety {
-                    self.dcx()
-                        .create_err(errors::TraitImplModifierInInherentImpl {
-                            span: self_ty.span,
-                            annotation_span: span,
-                            annotation: "unsafe",
-                            self_ty: self_ty.span,
-                            only_trait: true,
-                        })
-                        .with_code(E0197)
-                        .emit();
+                    error("unsafe", "unsafe", span).with_code(E0197).emit();
                 }
                 if let ImplPolarity::Negative(span) = polarity {
-                    self.dcx().emit_err(error(span, "negative", false));
+                    error("!", "negative", span).emit();
                 }
                 if let Defaultness::Default(def_span) = defaultness {
-                    self.dcx().emit_err(error(def_span, "`default`", true));
+                    error("default", "default", def_span).emit();
                 }
                 if let Const::Yes(span) = constness {
-                    self.dcx().emit_err(error(span, "`const`", true));
+                    error("const", "const", span).emit();
                 }
                 (None, self_ty)
             }