about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2022-12-16 19:30:32 +0000
committerMichael Goulet <michael@errs.io>2022-12-19 18:16:22 +0000
commitc40ededa10439e64f20ee45f3cdd50d893f20438 (patch)
tree2dce7019c06d5269e0d9dfdf0da532e7c7f6e8ce
parent9c4cf8d9d0da26b74782bdb29443d50f34f46ed0 (diff)
downloadrust-c40ededa10439e64f20ee45f3cdd50d893f20438.tar.gz
rust-c40ededa10439e64f20ee45f3cdd50d893f20438.zip
Downgrade IMPLIED_BOUNDS_ENTAILMENT to warn by default, add it to builtin lint list
-rw-r--r--compiler/rustc_lint_defs/src/builtin.rs9
-rw-r--r--src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.rs2
-rw-r--r--src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.stderr19
-rw-r--r--src/test/ui/implied-bounds/impl-implied-bounds-compatibility.rs2
-rw-r--r--src/test/ui/implied-bounds/impl-implied-bounds-compatibility.stderr19
5 files changed, 21 insertions, 30 deletions
diff --git a/compiler/rustc_lint_defs/src/builtin.rs b/compiler/rustc_lint_defs/src/builtin.rs
index c88158da763..f7a4103f4d5 100644
--- a/compiler/rustc_lint_defs/src/builtin.rs
+++ b/compiler/rustc_lint_defs/src/builtin.rs
@@ -3311,6 +3311,7 @@ declare_lint_pass! {
         FFI_UNWIND_CALLS,
         REPR_TRANSPARENT_EXTERNAL_PRIVATE_FIELDS,
         NAMED_ARGUMENTS_USED_POSITIONALLY,
+        IMPLIED_BOUNDS_ENTAILMENT,
     ]
 }
 
@@ -4027,15 +4028,15 @@ declare_lint! {
     /// ### Explanation
     ///
     /// Neither the trait method, which provides no implied bounds about `'s`, nor the impl,
-    /// which can't name `'s`, requires the main function to prove that 's: 'static, but the
-    /// impl method is able to assume that 's: 'static within its own body.
+    /// requires the main function to prove that 's: 'static, but the impl method is allowed
+    /// to assume that `'s: 'static` within its own body.
     ///
     /// This can be used to implement an unsound API if used incorrectly.
     pub IMPLIED_BOUNDS_ENTAILMENT,
-    Deny,
+    Warn,
     "impl method assumes more implied bounds than its corresponding trait method",
     @future_incompatible = FutureIncompatibleInfo {
         reference: "issue #105572 <https://github.com/rust-lang/rust/issues/105572>",
-        reason: FutureIncompatibilityReason::FutureReleaseErrorReportNow,
+        reason: FutureIncompatibilityReason::FutureReleaseError,
     };
 }
diff --git a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.rs b/src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.rs
index cb5d83abfb6..6ccbb5bb266 100644
--- a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.rs
+++ b/src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.rs
@@ -1,3 +1,5 @@
+#![deny(implied_bounds_entailment)]
+
 trait Project {
     type Ty;
 }
diff --git a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.stderr b/src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.stderr
index 5a757901777..0ac31c642eb 100644
--- a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.stderr
+++ b/src/test/ui/implied-bounds/impl-implied-bounds-compatibility-unnormalized.stderr
@@ -1,23 +1,16 @@
 error: impl method assumes more implied bounds than the corresponding trait method
-  --> $DIR/impl-implied-bounds-compatibility-unnormalized.rs:11:5
+  --> $DIR/impl-implied-bounds-compatibility-unnormalized.rs:13:5
    |
 LL |     fn get<'s>(s: &'s str, _: <&'static &'s () as Project>::Ty) -> &'static str {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
    = note: for more information, see issue #105572 <https://github.com/rust-lang/rust/issues/105572>
-   = note: `#[deny(implied_bounds_entailment)]` on by default
+note: the lint level is defined here
+  --> $DIR/impl-implied-bounds-compatibility-unnormalized.rs:1:9
+   |
+LL | #![deny(implied_bounds_entailment)]
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: aborting due to previous error
 
-Future incompatibility report: Future breakage diagnostic:
-error: impl method assumes more implied bounds than the corresponding trait method
-  --> $DIR/impl-implied-bounds-compatibility-unnormalized.rs:11:5
-   |
-LL |     fn get<'s>(s: &'s str, _: <&'static &'s () as Project>::Ty) -> &'static str {
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
-   = note: for more information, see issue #105572 <https://github.com/rust-lang/rust/issues/105572>
-   = note: `#[deny(implied_bounds_entailment)]` on by default
-
diff --git a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility.rs b/src/test/ui/implied-bounds/impl-implied-bounds-compatibility.rs
index 2d7cc38d263..d097bc16a22 100644
--- a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility.rs
+++ b/src/test/ui/implied-bounds/impl-implied-bounds-compatibility.rs
@@ -1,3 +1,5 @@
+#![deny(implied_bounds_entailment)]
+
 use std::cell::RefCell;
 
 pub struct MessageListeners<'a> {
diff --git a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility.stderr b/src/test/ui/implied-bounds/impl-implied-bounds-compatibility.stderr
index b7dbfc8ab8c..0dfa8167a99 100644
--- a/src/test/ui/implied-bounds/impl-implied-bounds-compatibility.stderr
+++ b/src/test/ui/implied-bounds/impl-implied-bounds-compatibility.stderr
@@ -1,23 +1,16 @@
 error: impl method assumes more implied bounds than the corresponding trait method
-  --> $DIR/impl-implied-bounds-compatibility.rs:12:5
+  --> $DIR/impl-implied-bounds-compatibility.rs:14:5
    |
 LL |     fn listeners<'b>(&'b self) -> &'a MessageListeners<'b> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
    = note: for more information, see issue #105572 <https://github.com/rust-lang/rust/issues/105572>
-   = note: `#[deny(implied_bounds_entailment)]` on by default
+note: the lint level is defined here
+  --> $DIR/impl-implied-bounds-compatibility.rs:1:9
+   |
+LL | #![deny(implied_bounds_entailment)]
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: aborting due to previous error
 
-Future incompatibility report: Future breakage diagnostic:
-error: impl method assumes more implied bounds than the corresponding trait method
-  --> $DIR/impl-implied-bounds-compatibility.rs:12:5
-   |
-LL |     fn listeners<'b>(&'b self) -> &'a MessageListeners<'b> {
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
-   = note: for more information, see issue #105572 <https://github.com/rust-lang/rust/issues/105572>
-   = note: `#[deny(implied_bounds_entailment)]` on by default
-