From 7714db873e3172f34bed004ac1976cf72a54c2e9 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Thu, 7 Sep 2023 00:49:04 +0000 Subject: [PATCH] Add note --- compiler/rustc_hir_analysis/messages.ftl | 1 + compiler/rustc_hir_analysis/src/errors.rs | 1 + .../impl-trait/in-trait/bad-item-bound-within-rpitit.stderr | 1 + tests/ui/impl-trait/in-trait/refine.stderr | 4 ++++ 4 files changed, 7 insertions(+) diff --git a/compiler/rustc_hir_analysis/messages.ftl b/compiler/rustc_hir_analysis/messages.ftl index 6a08fc528d70c..50da227831200 100644 --- a/compiler/rustc_hir_analysis/messages.ftl +++ b/compiler/rustc_hir_analysis/messages.ftl @@ -226,6 +226,7 @@ hir_analysis_rpitit_refined = impl trait in impl method signature does not match .suggestion = replace the return type so that it matches the trait .label = return type from trait method defined here .unmatched_bound_label = this bound is stronger than that defined on the trait + .note = add `#[allow(refining_impl_trait)]` if it is intended for this to be part of the public API of this crate hir_analysis_self_in_impl_self = `Self` is not valid in the self type of an impl block diff --git a/compiler/rustc_hir_analysis/src/errors.rs b/compiler/rustc_hir_analysis/src/errors.rs index a1b306edd64fc..7614913f4bf51 100644 --- a/compiler/rustc_hir_analysis/src/errors.rs +++ b/compiler/rustc_hir_analysis/src/errors.rs @@ -921,6 +921,7 @@ pub struct UnusedAssociatedTypeBounds { #[derive(LintDiagnostic)] #[diag(hir_analysis_rpitit_refined)] +#[note] pub(crate) struct ReturnPositionImplTraitInTraitRefined<'tcx> { #[suggestion(applicability = "maybe-incorrect", code = "{pre}{return_ty}{post}")] pub impl_return_span: Span, diff --git a/tests/ui/impl-trait/in-trait/bad-item-bound-within-rpitit.stderr b/tests/ui/impl-trait/in-trait/bad-item-bound-within-rpitit.stderr index c0e07e94dabbe..a5fb338ea4e13 100644 --- a/tests/ui/impl-trait/in-trait/bad-item-bound-within-rpitit.stderr +++ b/tests/ui/impl-trait/in-trait/bad-item-bound-within-rpitit.stderr @@ -21,6 +21,7 @@ LL | fn iter(&self) -> impl '_ + Iterator>; LL | fn iter(&self) -> impl 'a + Iterator> { | ^^ this bound is stronger than that defined on the trait | + = note: add `#[allow(refining_impl_trait)]` if it is intended for this to be part of the public API of this crate = note: `#[warn(refining_impl_trait)]` on by default help: replace the return type so that it matches the trait | diff --git a/tests/ui/impl-trait/in-trait/refine.stderr b/tests/ui/impl-trait/in-trait/refine.stderr index 65dfdf869e4b1..29aa08e25bb91 100644 --- a/tests/ui/impl-trait/in-trait/refine.stderr +++ b/tests/ui/impl-trait/in-trait/refine.stderr @@ -7,6 +7,7 @@ LL | fn bar() -> impl Sized; LL | fn bar() -> impl Copy {} | ^^^^ this bound is stronger than that defined on the trait | + = note: add `#[allow(refining_impl_trait)]` if it is intended for this to be part of the public API of this crate note: the lint level is defined here --> $DIR/refine.rs:2:9 | @@ -26,6 +27,7 @@ LL | fn bar() -> impl Sized; LL | fn bar() {} | ^^^^^^^^ | + = note: add `#[allow(refining_impl_trait)]` if it is intended for this to be part of the public API of this crate help: replace the return type so that it matches the trait | LL | fn bar() -> impl Sized {} @@ -40,6 +42,7 @@ LL | fn bar() -> impl Sized; LL | fn bar() -> () {} | ^^ | + = note: add `#[allow(refining_impl_trait)]` if it is intended for this to be part of the public API of this crate help: replace the return type so that it matches the trait | LL | fn bar() -> impl Sized {} @@ -54,6 +57,7 @@ LL | fn bar<'a>(&'a self) -> impl Sized + 'a; LL | fn bar(&self) -> impl Copy + '_ {} | ^^^^ this bound is stronger than that defined on the trait | + = note: add `#[allow(refining_impl_trait)]` if it is intended for this to be part of the public API of this crate help: replace the return type so that it matches the trait | LL | fn bar(&self) -> impl Sized + '_ {}