Rollup merge of #86717 - rylev:rename, r=nikomatsakis
Rename some Rust 2021 lints to better names Based on conversation in https://github.com/rust-lang/rust/issues/85894. Rename a bunch of Rust 2021 related lints: Lints that are officially renamed because they are already in beta or stable: * `disjoint_capture_migration` => `rust_2021_incompatible_closure_captures` * `or_patterns_back_compat` => `rust_2021_incompatible_or_patterns` * `non_fmt_panic` => `non_fmt_panics` Lints that are renamed but don't require any back -compat work since they aren't yet in stable: * `future_prelude_collision` => `rust_2021_prelude_collisions` * `reserved_prefix` => `rust_2021_token_prefixes` Lints that have been discussed but that I did not rename: * ~`non_fmt_panic` and `bare_trait_object`: is making this plural worth the headache we might cause users?~ * `array_into_iter`: I'm unsure of a good name and whether bothering users with a name change is worth it. r? `@nikomatsakis`
This commit is contained in:
commit
7e95290caa
69 changed files with 309 additions and 267 deletions
|
|
@ -1,10 +1,10 @@
|
|||
// run-rustfix
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
|
||||
use std::thread;
|
||||
|
||||
/* Test Send Trait Migration */
|
||||
struct SendPointer (*mut i32);
|
||||
struct SendPointer(*mut i32);
|
||||
unsafe impl Send for SendPointer {}
|
||||
|
||||
fn test_send_trait() {
|
||||
|
|
@ -18,8 +18,8 @@ fn test_send_trait() {
|
|||
}
|
||||
|
||||
/* Test Sync Trait Migration */
|
||||
struct CustomInt (*mut i32);
|
||||
struct SyncPointer (CustomInt);
|
||||
struct CustomInt(*mut i32);
|
||||
struct SyncPointer(CustomInt);
|
||||
unsafe impl Sync for SyncPointer {}
|
||||
unsafe impl Send for CustomInt {}
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ fn test_sync_trait() {
|
|||
struct S(String);
|
||||
struct T(i32);
|
||||
|
||||
struct U(S,T);
|
||||
struct U(S, T);
|
||||
|
||||
impl Clone for U {
|
||||
fn clone(&self) -> Self {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
// run-rustfix
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
|
||||
use std::thread;
|
||||
|
||||
/* Test Send Trait Migration */
|
||||
struct SendPointer (*mut i32);
|
||||
struct SendPointer(*mut i32);
|
||||
unsafe impl Send for SendPointer {}
|
||||
|
||||
fn test_send_trait() {
|
||||
|
|
@ -18,8 +18,8 @@ fn test_send_trait() {
|
|||
}
|
||||
|
||||
/* Test Sync Trait Migration */
|
||||
struct CustomInt (*mut i32);
|
||||
struct SyncPointer (CustomInt);
|
||||
struct CustomInt(*mut i32);
|
||||
struct SyncPointer(CustomInt);
|
||||
unsafe impl Sync for SyncPointer {}
|
||||
unsafe impl Send for CustomInt {}
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ fn test_sync_trait() {
|
|||
struct S(String);
|
||||
struct T(i32);
|
||||
|
||||
struct U(S,T);
|
||||
struct U(S, T);
|
||||
|
||||
impl Clone for U {
|
||||
fn clone(&self) -> Self {
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ LL | | });
|
|||
note: the lint level is defined here
|
||||
--> $DIR/auto_traits.rs:2:9
|
||||
|
|
||||
LL | #![deny(disjoint_capture_migration)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![deny(rust_2021_incompatible_closure_captures)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/disjoint-capture-in-closures.html>
|
||||
help: add a dummy let to cause `fptr` to be fully captured
|
||||
|
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// run-rustfix
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
//~^ NOTE: the lint level is defined here
|
||||
|
||||
// Test cases for types that implement a insignificant drop (stlib defined)
|
||||
|
|
@ -13,9 +13,9 @@ fn test1_all_need_migration() {
|
|||
let t2 = (String::new(), String::new());
|
||||
|
||||
let c = || { let _ = (&t, &t1, &t2);
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1`, `t2` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1`, `t2` to be fully captured
|
||||
|
||||
let _t = t.0;
|
||||
let _t1 = t1.0;
|
||||
|
|
@ -33,9 +33,9 @@ fn test2_only_precise_paths_need_migration() {
|
|||
let t2 = (String::new(), String::new());
|
||||
|
||||
let c = || { let _ = (&t, &t1);
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1` to be fully captured
|
||||
let _t = t.0;
|
||||
let _t1 = t1.0;
|
||||
let _t2 = t2;
|
||||
|
|
@ -50,9 +50,9 @@ fn test3_only_by_value_need_migration() {
|
|||
let t = (String::new(), String::new());
|
||||
let t1 = (String::new(), String::new());
|
||||
let c = || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
println!("{}", t1.1);
|
||||
};
|
||||
|
|
@ -69,9 +69,9 @@ fn test4_only_non_copy_types_need_migration() {
|
|||
let t1 = (0i32, 0i32);
|
||||
|
||||
let c = || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
let _t1 = t1.0;
|
||||
};
|
||||
|
|
@ -88,9 +88,9 @@ fn test5_only_drop_types_need_migration() {
|
|||
let s = S(0i32, 0i32);
|
||||
|
||||
let c = || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
let _s = s.0;
|
||||
};
|
||||
|
|
@ -104,9 +104,9 @@ fn test6_move_closures_non_copy_types_might_need_migration() {
|
|||
let t = (String::new(), String::new());
|
||||
let t1 = (String::new(), String::new());
|
||||
let c = move || { let _ = (&t1, &t);
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t1`, `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t1`, `t` to be fully captured
|
||||
println!("{} {}", t1.1, t.1);
|
||||
};
|
||||
|
||||
|
|
@ -120,9 +120,9 @@ fn test7_drop_non_drop_aggregate_need_migration() {
|
|||
let t = (String::new(), String::new(), 0i32);
|
||||
|
||||
let c = || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// run-rustfix
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
//~^ NOTE: the lint level is defined here
|
||||
|
||||
// Test cases for types that implement a insignificant drop (stlib defined)
|
||||
|
|
@ -13,9 +13,9 @@ fn test1_all_need_migration() {
|
|||
let t2 = (String::new(), String::new());
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1`, `t2` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1`, `t2` to be fully captured
|
||||
|
||||
let _t = t.0;
|
||||
let _t1 = t1.0;
|
||||
|
|
@ -33,9 +33,9 @@ fn test2_only_precise_paths_need_migration() {
|
|||
let t2 = (String::new(), String::new());
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1` to be fully captured
|
||||
let _t = t.0;
|
||||
let _t1 = t1.0;
|
||||
let _t2 = t2;
|
||||
|
|
@ -50,9 +50,9 @@ fn test3_only_by_value_need_migration() {
|
|||
let t = (String::new(), String::new());
|
||||
let t1 = (String::new(), String::new());
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
println!("{}", t1.1);
|
||||
};
|
||||
|
|
@ -69,9 +69,9 @@ fn test4_only_non_copy_types_need_migration() {
|
|||
let t1 = (0i32, 0i32);
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
let _t1 = t1.0;
|
||||
};
|
||||
|
|
@ -88,9 +88,9 @@ fn test5_only_drop_types_need_migration() {
|
|||
let s = S(0i32, 0i32);
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
let _s = s.0;
|
||||
};
|
||||
|
|
@ -104,9 +104,9 @@ fn test6_move_closures_non_copy_types_might_need_migration() {
|
|||
let t = (String::new(), String::new());
|
||||
let t1 = (String::new(), String::new());
|
||||
let c = move || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t1`, `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t1`, `t` to be fully captured
|
||||
println!("{} {}", t1.1, t.1);
|
||||
};
|
||||
|
||||
|
|
@ -120,9 +120,9 @@ fn test7_drop_non_drop_aggregate_need_migration() {
|
|||
let t = (String::new(), String::new(), 0i32);
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ LL | | };
|
|||
note: the lint level is defined here
|
||||
--> $DIR/insignificant_drop.rs:3:9
|
||||
|
|
||||
LL | #![deny(disjoint_capture_migration)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![deny(rust_2021_incompatible_closure_captures)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/disjoint-capture-in-closures.html>
|
||||
help: add a dummy let to cause `t`, `t1`, `t2` to be fully captured
|
||||
|
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
// run-rustfix
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
//~^ NOTE: the lint level is defined here
|
||||
|
||||
#![feature(rustc_attrs)]
|
||||
#![allow(unused)]
|
||||
|
||||
|
|
@ -36,9 +35,9 @@ fn significant_drop_needs_migration() {
|
|||
let t = (SigDrop {}, SigDrop {});
|
||||
|
||||
let c = || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
};
|
||||
|
||||
|
|
@ -54,9 +53,9 @@ fn generic_struct_with_significant_drop_needs_migration() {
|
|||
|
||||
// move is used to force i32 to be copied instead of being a ref
|
||||
let c = move || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.1;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
// run-rustfix
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
//~^ NOTE: the lint level is defined here
|
||||
|
||||
#![feature(rustc_attrs)]
|
||||
#![allow(unused)]
|
||||
|
||||
|
|
@ -36,9 +35,9 @@ fn significant_drop_needs_migration() {
|
|||
let t = (SigDrop {}, SigDrop {});
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
};
|
||||
|
||||
|
|
@ -54,9 +53,9 @@ fn generic_struct_with_significant_drop_needs_migration() {
|
|||
|
||||
// move is used to force i32 to be copied instead of being a ref
|
||||
let c = move || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.1;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error: drop order will change in Rust 2021
|
||||
--> $DIR/insignificant_drop_attr_migrations.rs:38:13
|
||||
--> $DIR/insignificant_drop_attr_migrations.rs:37:13
|
||||
|
|
||||
LL | let c = || {
|
||||
| _____________^
|
||||
|
|
@ -13,8 +13,8 @@ LL | | };
|
|||
note: the lint level is defined here
|
||||
--> $DIR/insignificant_drop_attr_migrations.rs:3:9
|
||||
|
|
||||
LL | #![deny(disjoint_capture_migration)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![deny(rust_2021_incompatible_closure_captures)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/disjoint-capture-in-closures.html>
|
||||
help: add a dummy let to cause `t` to be fully captured
|
||||
|
|
||||
|
|
@ -27,7 +27,7 @@ LL | };
|
|||
|
|
||||
|
||||
error: drop order will change in Rust 2021
|
||||
--> $DIR/insignificant_drop_attr_migrations.rs:56:13
|
||||
--> $DIR/insignificant_drop_attr_migrations.rs:55:13
|
||||
|
|
||||
LL | let c = move || {
|
||||
| _____________^
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// run-pass
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
#![feature(rustc_attrs)]
|
||||
#![allow(unused)]
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
// run-pass
|
||||
|
||||
#![warn(disjoint_capture_migration)]
|
||||
#![warn(rust_2021_incompatible_closure_captures)]
|
||||
|
||||
fn main() {
|
||||
if let a = "" {
|
||||
//~^ WARNING: irrefutable `if let` pattern
|
||||
//~^ WARNING: irrefutable `if let` pattern
|
||||
drop(|_: ()| drop(a));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// run-rustfix
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
//~^ NOTE: the lint level is defined here
|
||||
|
||||
// Test the two possible cases for automated migartion using rustfix
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// run-rustfix
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
//~^ NOTE: the lint level is defined here
|
||||
|
||||
// Test the two possible cases for automated migartion using rustfix
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ LL | | };
|
|||
note: the lint level is defined here
|
||||
--> $DIR/migrations_rustfix.rs:2:9
|
||||
|
|
||||
LL | #![deny(disjoint_capture_migration)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![deny(rust_2021_incompatible_closure_captures)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/disjoint-capture-in-closures.html>
|
||||
help: add a dummy let to cause `t` to be fully captured
|
||||
|
|
||||
|
|
|
|||
|
|
@ -1,16 +1,20 @@
|
|||
// run-rustfix
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
// ignore-wasm32-bare compiled with panic=abort by default
|
||||
|
||||
#![feature(fn_traits)]
|
||||
#![feature(never_type)]
|
||||
|
||||
use std::panic;
|
||||
|
||||
fn foo_diverges() -> ! { panic!() }
|
||||
fn foo_diverges() -> ! {
|
||||
panic!()
|
||||
}
|
||||
|
||||
fn assert_panics<F>(f: F) where F: FnOnce() {
|
||||
fn assert_panics<F>(f: F)
|
||||
where
|
||||
F: FnOnce(),
|
||||
{
|
||||
let f = panic::AssertUnwindSafe(f);
|
||||
let result = panic::catch_unwind(move || { let _ = &f;
|
||||
//~^ ERROR: `UnwindSafe`, `RefUnwindSafe` trait implementation
|
||||
|
|
@ -23,7 +27,8 @@ fn assert_panics<F>(f: F) where F: FnOnce() {
|
|||
}
|
||||
|
||||
fn test_fn_ptr_panic<T>(mut t: T)
|
||||
where T: Fn() -> !
|
||||
where
|
||||
T: Fn() -> !,
|
||||
{
|
||||
let as_fn = <T as Fn<()>>::call;
|
||||
assert_panics(|| as_fn(&t, ()));
|
||||
|
|
|
|||
|
|
@ -1,16 +1,20 @@
|
|||
// run-rustfix
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
// ignore-wasm32-bare compiled with panic=abort by default
|
||||
|
||||
#![feature(fn_traits)]
|
||||
#![feature(never_type)]
|
||||
|
||||
use std::panic;
|
||||
|
||||
fn foo_diverges() -> ! { panic!() }
|
||||
fn foo_diverges() -> ! {
|
||||
panic!()
|
||||
}
|
||||
|
||||
fn assert_panics<F>(f: F) where F: FnOnce() {
|
||||
fn assert_panics<F>(f: F)
|
||||
where
|
||||
F: FnOnce(),
|
||||
{
|
||||
let f = panic::AssertUnwindSafe(f);
|
||||
let result = panic::catch_unwind(move || {
|
||||
//~^ ERROR: `UnwindSafe`, `RefUnwindSafe` trait implementation
|
||||
|
|
@ -23,7 +27,8 @@ fn assert_panics<F>(f: F) where F: FnOnce() {
|
|||
}
|
||||
|
||||
fn test_fn_ptr_panic<T>(mut t: T)
|
||||
where T: Fn() -> !
|
||||
where
|
||||
T: Fn() -> !,
|
||||
{
|
||||
let as_fn = <T as Fn<()>>::call;
|
||||
assert_panics(|| as_fn(&t, ()));
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error: `UnwindSafe`, `RefUnwindSafe` trait implementation will change in Rust 2021
|
||||
--> $DIR/mir_calls_to_shims.rs:15:38
|
||||
--> $DIR/mir_calls_to_shims.rs:19:38
|
||||
|
|
||||
LL | let result = panic::catch_unwind(move || {
|
||||
| ______________________________________^
|
||||
|
|
@ -12,8 +12,8 @@ LL | | });
|
|||
note: the lint level is defined here
|
||||
--> $DIR/mir_calls_to_shims.rs:3:9
|
||||
|
|
||||
LL | #![deny(disjoint_capture_migration)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![deny(rust_2021_incompatible_closure_captures)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/disjoint-capture-in-closures.html>
|
||||
help: add a dummy let to cause `f` to be fully captured
|
||||
|
|
||||
|
|
|
|||
|
|
@ -2,8 +2,7 @@
|
|||
|
||||
// Set of test cases that don't need migrations
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
|
||||
// Copy types as copied by the closure instead of being moved into the closure
|
||||
// Therefore their drop order isn't tied to the closure and won't be requiring any
|
||||
|
|
@ -53,7 +52,6 @@ fn test4_insignificant_drop_non_drop_aggregate() {
|
|||
c();
|
||||
}
|
||||
|
||||
|
||||
struct Foo(i32);
|
||||
impl Drop for Foo {
|
||||
fn drop(&mut self) {
|
||||
|
|
@ -80,5 +78,4 @@ fn main() {
|
|||
test3_only_copy_types_move_closure();
|
||||
test4_insignificant_drop_non_drop_aggregate();
|
||||
test5_significant_drop_non_drop_aggregate();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
// check-pass
|
||||
|
||||
// Ensure that the old name for `rust_2021_incompatible_closure_captures` is still
|
||||
// accepted by the compiler
|
||||
|
||||
#![allow(disjoint_capture_migration)]
|
||||
//~^ WARN lint `disjoint_capture_migration` has been renamed
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
warning: lint `disjoint_capture_migration` has been renamed to `rust_2021_incompatible_closure_captures`
|
||||
--> $DIR/old_name.rs:6:10
|
||||
|
|
||||
LL | #![allow(disjoint_capture_migration)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `rust_2021_incompatible_closure_captures`
|
||||
|
|
||||
= note: `#[warn(renamed_and_removed_lints)]` on by default
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
// run-rustfix
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
|
||||
#[derive(Debug)]
|
||||
struct Foo(i32);
|
||||
|
|
@ -17,8 +17,8 @@ fn test_precise_analysis_drop_paths_not_captured_by_move() {
|
|||
let t = ConstainsDropField(Foo(10), Foo(20));
|
||||
|
||||
let c = || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
let _t = &t.1;
|
||||
};
|
||||
|
|
@ -28,8 +28,7 @@ fn test_precise_analysis_drop_paths_not_captured_by_move() {
|
|||
|
||||
struct S;
|
||||
impl Drop for S {
|
||||
fn drop(&mut self) {
|
||||
}
|
||||
fn drop(&mut self) {}
|
||||
}
|
||||
|
||||
struct T(S, S);
|
||||
|
|
@ -40,8 +39,8 @@ fn test_precise_analysis_long_path_missing() {
|
|||
let u = U(T(S, S), T(S, S));
|
||||
|
||||
let c = || { let _ = &u;
|
||||
//~^ ERROR: drop order
|
||||
//~| HELP: add a dummy let to cause `u` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| HELP: add a dummy let to cause `u` to be fully captured
|
||||
let _x = u.0.0;
|
||||
let _x = u.0.1;
|
||||
let _x = u.1.0;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// run-rustfix
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
|
||||
#[derive(Debug)]
|
||||
struct Foo(i32);
|
||||
|
|
@ -17,8 +17,8 @@ fn test_precise_analysis_drop_paths_not_captured_by_move() {
|
|||
let t = ConstainsDropField(Foo(10), Foo(20));
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
let _t = &t.1;
|
||||
};
|
||||
|
|
@ -28,8 +28,7 @@ fn test_precise_analysis_drop_paths_not_captured_by_move() {
|
|||
|
||||
struct S;
|
||||
impl Drop for S {
|
||||
fn drop(&mut self) {
|
||||
}
|
||||
fn drop(&mut self) {}
|
||||
}
|
||||
|
||||
struct T(S, S);
|
||||
|
|
@ -40,8 +39,8 @@ fn test_precise_analysis_long_path_missing() {
|
|||
let u = U(T(S, S), T(S, S));
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| HELP: add a dummy let to cause `u` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| HELP: add a dummy let to cause `u` to be fully captured
|
||||
let _x = u.0.0;
|
||||
let _x = u.0.1;
|
||||
let _x = u.1.0;
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ LL | | };
|
|||
note: the lint level is defined here
|
||||
--> $DIR/precise.rs:3:9
|
||||
|
|
||||
LL | #![deny(disjoint_capture_migration)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![deny(rust_2021_incompatible_closure_captures)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/disjoint-capture-in-closures.html>
|
||||
help: add a dummy let to cause `t` to be fully captured
|
||||
|
|
||||
|
|
@ -27,7 +27,7 @@ LL | };
|
|||
|
|
||||
|
||||
error: drop order will change in Rust 2021
|
||||
--> $DIR/precise.rs:42:13
|
||||
--> $DIR/precise.rs:41:13
|
||||
|
|
||||
LL | let c = || {
|
||||
| _____________^
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// run-pass
|
||||
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
|
||||
#[derive(Debug)]
|
||||
struct Foo(i32);
|
||||
|
|
@ -73,8 +73,7 @@ fn test_precise_analysis_parent_captured_2() {
|
|||
|
||||
struct S;
|
||||
impl Drop for S {
|
||||
fn drop(&mut self) {
|
||||
}
|
||||
fn drop(&mut self) {}
|
||||
}
|
||||
|
||||
struct T(S, S);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// run-rustfix
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
//~^ NOTE: the lint level is defined here
|
||||
|
||||
// Test cases for types that implement a significant drop (user defined)
|
||||
|
|
@ -23,9 +23,9 @@ fn test1_all_need_migration() {
|
|||
let t2 = (Foo(0), Foo(0));
|
||||
|
||||
let c = || { let _ = (&t, &t1, &t2);
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1`, `t2` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1`, `t2` to be fully captured
|
||||
let _t = t.0;
|
||||
let _t1 = t1.0;
|
||||
let _t2 = t2.0;
|
||||
|
|
@ -42,9 +42,9 @@ fn test2_only_precise_paths_need_migration() {
|
|||
let t2 = (Foo(0), Foo(0));
|
||||
|
||||
let c = || { let _ = (&t, &t1);
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1` to be fully captured
|
||||
let _t = t.0;
|
||||
let _t1 = t1.0;
|
||||
let _t2 = t2;
|
||||
|
|
@ -59,9 +59,9 @@ fn test3_only_by_value_need_migration() {
|
|||
let t = (Foo(0), Foo(0));
|
||||
let t1 = (Foo(0), Foo(0));
|
||||
let c = || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
println!("{:?}", t1.1);
|
||||
};
|
||||
|
|
@ -77,9 +77,9 @@ fn test4_type_contains_drop_need_migration() {
|
|||
let t = ConstainsDropField(Foo(0), Foo(0));
|
||||
|
||||
let c = || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
};
|
||||
|
||||
|
|
@ -93,9 +93,9 @@ fn test5_drop_non_drop_aggregate_need_migration() {
|
|||
let t = (Foo(0), Foo(0), 0i32);
|
||||
|
||||
let c = || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
};
|
||||
|
||||
|
|
@ -107,9 +107,9 @@ fn test6_significant_insignificant_drop_aggregate_need_migration() {
|
|||
let t = (Foo(0), String::new());
|
||||
|
||||
let c = || { let _ = &t;
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.1;
|
||||
};
|
||||
|
||||
|
|
@ -123,9 +123,9 @@ fn test7_move_closures_non_copy_types_might_need_migration() {
|
|||
let t1 = (Foo(0), Foo(0), Foo(0));
|
||||
|
||||
let c = move || { let _ = (&t1, &t);
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t1`, `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t1`, `t` to be fully captured
|
||||
println!("{:?} {:?}", t1.1, t.1);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// run-rustfix
|
||||
#![deny(disjoint_capture_migration)]
|
||||
#![deny(rust_2021_incompatible_closure_captures)]
|
||||
//~^ NOTE: the lint level is defined here
|
||||
|
||||
// Test cases for types that implement a significant drop (user defined)
|
||||
|
|
@ -23,9 +23,9 @@ fn test1_all_need_migration() {
|
|||
let t2 = (Foo(0), Foo(0));
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1`, `t2` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1`, `t2` to be fully captured
|
||||
let _t = t.0;
|
||||
let _t1 = t1.0;
|
||||
let _t2 = t2.0;
|
||||
|
|
@ -42,9 +42,9 @@ fn test2_only_precise_paths_need_migration() {
|
|||
let t2 = (Foo(0), Foo(0));
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t`, `t1` to be fully captured
|
||||
let _t = t.0;
|
||||
let _t1 = t1.0;
|
||||
let _t2 = t2;
|
||||
|
|
@ -59,9 +59,9 @@ fn test3_only_by_value_need_migration() {
|
|||
let t = (Foo(0), Foo(0));
|
||||
let t1 = (Foo(0), Foo(0));
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
println!("{:?}", t1.1);
|
||||
};
|
||||
|
|
@ -77,9 +77,9 @@ fn test4_type_contains_drop_need_migration() {
|
|||
let t = ConstainsDropField(Foo(0), Foo(0));
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
};
|
||||
|
||||
|
|
@ -93,9 +93,9 @@ fn test5_drop_non_drop_aggregate_need_migration() {
|
|||
let t = (Foo(0), Foo(0), 0i32);
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.0;
|
||||
};
|
||||
|
||||
|
|
@ -107,9 +107,9 @@ fn test6_significant_insignificant_drop_aggregate_need_migration() {
|
|||
let t = (Foo(0), String::new());
|
||||
|
||||
let c = || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t` to be fully captured
|
||||
let _t = t.1;
|
||||
};
|
||||
|
||||
|
|
@ -123,9 +123,9 @@ fn test7_move_closures_non_copy_types_might_need_migration() {
|
|||
let t1 = (Foo(0), Foo(0), Foo(0));
|
||||
|
||||
let c = move || {
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t1`, `t` to be fully captured
|
||||
//~^ ERROR: drop order
|
||||
//~| NOTE: for more information, see
|
||||
//~| HELP: add a dummy let to cause `t1`, `t` to be fully captured
|
||||
println!("{:?} {:?}", t1.1, t.1);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ LL | | };
|
|||
note: the lint level is defined here
|
||||
--> $DIR/significant_drop.rs:2:9
|
||||
|
|
||||
LL | #![deny(disjoint_capture_migration)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![deny(rust_2021_incompatible_closure_captures)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/disjoint-capture-in-closures.html>
|
||||
help: add a dummy let to cause `t`, `t1`, `t2` to be fully captured
|
||||
|
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#![feature(const_panic)]
|
||||
#![allow(non_fmt_panic)]
|
||||
#![allow(non_fmt_panics)]
|
||||
#![crate_type = "lib"]
|
||||
|
||||
const MSG: &str = "hello";
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@ fn main() {
|
|||
|
||||
fn named_argument_takes_precedence_to_captured() {
|
||||
let foo = "captured";
|
||||
let s = format!("{foo}", foo="named");
|
||||
let s = format!("{foo}", foo = "named");
|
||||
assert_eq!(&s, "named");
|
||||
|
||||
let s = format!("{foo}-{foo}-{foo}", foo="named");
|
||||
let s = format!("{foo}-{foo}-{foo}", foo = "named");
|
||||
assert_eq!(&s, "named-named-named");
|
||||
|
||||
let s = format!("{}-{bar}-{foo}", "positional", bar="named");
|
||||
let s = format!("{}-{bar}-{foo}", "positional", bar = "named");
|
||||
assert_eq!(&s, "positional-named-captured");
|
||||
}
|
||||
|
||||
|
|
@ -42,10 +42,11 @@ fn panic_with_single_argument_does_not_get_formatted() {
|
|||
// RFC #2795 suggests that this may need to change so that captured arguments are formatted.
|
||||
// For stability reasons this will need to part of an edition change.
|
||||
|
||||
#[allow(non_fmt_panic)]
|
||||
#[allow(non_fmt_panics)]
|
||||
let msg = std::panic::catch_unwind(|| {
|
||||
panic!("{foo}");
|
||||
}).unwrap_err();
|
||||
})
|
||||
.unwrap_err();
|
||||
|
||||
assert_eq!(msg.downcast_ref::<&str>(), Some(&"{foo}"))
|
||||
}
|
||||
|
|
@ -55,8 +56,9 @@ fn panic_with_multiple_arguments_is_formatted() {
|
|||
let foo = "captured";
|
||||
|
||||
let msg = std::panic::catch_unwind(|| {
|
||||
panic!("{}-{bar}-{foo}", "positional", bar="named");
|
||||
}).unwrap_err();
|
||||
panic!("{}-{bar}-{foo}", "positional", bar = "named");
|
||||
})
|
||||
.unwrap_err();
|
||||
|
||||
assert_eq!(msg.downcast_ref::<String>(), Some(&"positional-named-captured".to_string()))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// error-pattern:panicked at 'test-assert-owned'
|
||||
// ignore-emscripten no processes
|
||||
|
||||
#![allow(non_fmt_panic)]
|
||||
#![allow(non_fmt_panics)]
|
||||
|
||||
fn main() {
|
||||
assert!(false, "test-assert-owned".to_string());
|
||||
|
|
|
|||
|
|
@ -14,11 +14,12 @@
|
|||
// revisions: std core
|
||||
|
||||
// ignore-wasm32-bare compiled with panic=abort by default
|
||||
|
||||
#![cfg_attr(core, no_std)]
|
||||
|
||||
#[cfg(std)] use std::fmt;
|
||||
#[cfg(core)] use core::fmt;
|
||||
#[cfg(core)]
|
||||
use core::fmt;
|
||||
#[cfg(std)]
|
||||
use std::fmt;
|
||||
|
||||
// an easy mistake in the implementation of 'assert!'
|
||||
// would cause this to say "explicit panic"
|
||||
|
|
@ -57,7 +58,7 @@ fn writeln_1arg() {
|
|||
//
|
||||
// (Example: Issue #48042)
|
||||
#[test]
|
||||
#[allow(non_fmt_panic)]
|
||||
#[allow(non_fmt_panics)]
|
||||
fn to_format_or_not_to_format() {
|
||||
// ("{}" is the easiest string to test because if this gets
|
||||
// sent to format_args!, it'll simply fail to compile.
|
||||
|
|
@ -80,13 +81,17 @@ fn to_format_or_not_to_format() {
|
|||
// format!("{}",); // see check-fail
|
||||
// format_args!("{}",); // see check-fail
|
||||
|
||||
if falsum() { panic!("{}",); }
|
||||
if falsum() {
|
||||
panic!("{}",);
|
||||
}
|
||||
|
||||
// print!("{}",); // see check-fail
|
||||
// println!("{}",); // see check-fail
|
||||
// unimplemented!("{}",); // see check-fail
|
||||
|
||||
if falsum() { unreachable!("{}",); }
|
||||
if falsum() {
|
||||
unreachable!("{}",);
|
||||
}
|
||||
|
||||
// write!(&mut stdout, "{}",); // see check-fail
|
||||
// writeln!(&mut stdout, "{}",); // see check-fail
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// run-rustfix
|
||||
// aux-build:or-pattern.rs
|
||||
|
||||
#![deny(or_patterns_back_compat)]
|
||||
#![deny(rust_2021_incompatible_or_patterns)]
|
||||
#![allow(unused_macros)]
|
||||
|
||||
#[macro_use]
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// run-rustfix
|
||||
// aux-build:or-pattern.rs
|
||||
|
||||
#![deny(or_patterns_back_compat)]
|
||||
#![deny(rust_2021_incompatible_or_patterns)]
|
||||
#![allow(unused_macros)]
|
||||
|
||||
#[macro_use]
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ LL | macro_rules! foo { ($x:pat | $y:pat) => {} }
|
|||
note: the lint level is defined here
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:4:9
|
||||
|
|
||||
LL | #![deny(or_patterns_back_compat)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![deny(rust_2021_incompatible_or_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
||||
= note: for more information, see issue #84869 <https://github.com/rust-lang/rust/issues/84869>
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ warning: panic message contains a brace
|
|||
LL | panic!("here's a brace: {");
|
||||
| ^
|
||||
|
|
||||
= note: `#[warn(non_fmt_panic)]` on by default
|
||||
= note: `#[warn(non_fmt_panics)]` on by default
|
||||
= note: this message is not used as a format string, but will be in Rust 2021
|
||||
help: add a "{}" format string to use the message literally
|
||||
|
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#![allow(unused_assignments)]
|
||||
#![allow(unused_variables)]
|
||||
#![allow(non_fmt_panic)]
|
||||
#![allow(non_fmt_panics)]
|
||||
|
||||
// run-fail
|
||||
// error-pattern:wooooo
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// error-pattern:panicked at 'Box<dyn Any>'
|
||||
// ignore-emscripten no processes
|
||||
|
||||
#![allow(non_fmt_panic)]
|
||||
#![allow(non_fmt_panics)]
|
||||
|
||||
fn main() {
|
||||
panic!(Box::new(612_i64));
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
// ignore-emscripten no processes
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![allow(non_fmt_panic)]
|
||||
#![allow(non_fmt_panics)]
|
||||
|
||||
fn main() {
|
||||
panic!(box 413 as Box<dyn std::any::Any + Send>);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// run-rustfix
|
||||
// edition:2018
|
||||
// check-pass
|
||||
#![warn(future_prelude_collision)]
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
#![allow(dead_code)]
|
||||
#![allow(unused_imports)]
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// run-rustfix
|
||||
// edition:2018
|
||||
// check-pass
|
||||
#![warn(future_prelude_collision)]
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
#![allow(dead_code)]
|
||||
#![allow(unused_imports)]
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ LL | let _: u32 = 3u8.try_into().unwrap();
|
|||
note: the lint level is defined here
|
||||
--> $DIR/future-prelude-collision-imported.rs:4:9
|
||||
|
|
||||
LL | #![warn(future_prelude_collision)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![warn(rust_2021_prelude_collisions)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
|
||||
= note: for more information, see issue #85684 <https://github.com/rust-lang/rust/issues/85684>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// edition:2018
|
||||
#![warn(future_prelude_collision)]
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
#![allow(dead_code)]
|
||||
#![allow(unused_imports)]
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
// edition:2018
|
||||
// check-pass
|
||||
#![allow(unused)]
|
||||
#![deny(future_prelude_collision)]
|
||||
#![deny(rust_2021_prelude_collisions)]
|
||||
|
||||
struct S;
|
||||
|
||||
impl S {
|
||||
fn try_into(self) -> S { S }
|
||||
fn try_into(self) -> S {
|
||||
S
|
||||
}
|
||||
}
|
||||
|
||||
// See https://github.com/rust-lang/rust/issues/86633
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// run-rustfix
|
||||
// edition:2018
|
||||
// check-pass
|
||||
#![warn(future_prelude_collision)]
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
|
||||
trait TryIntoU32 {
|
||||
fn try_into(self) -> Result<u32, ()>;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// run-rustfix
|
||||
// edition:2018
|
||||
// check-pass
|
||||
#![warn(future_prelude_collision)]
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
|
||||
trait TryIntoU32 {
|
||||
fn try_into(self) -> Result<u32, ()>;
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ LL | let _: u32 = 3u8.try_into().unwrap();
|
|||
note: the lint level is defined here
|
||||
--> $DIR/future-prelude-collision.rs:4:9
|
||||
|
|
||||
LL | #![warn(future_prelude_collision)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![warn(rust_2021_prelude_collisions)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
|
||||
= note: for more information, see issue #85684 <https://github.com/rust-lang/rust/issues/85684>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// check-pass
|
||||
// run-rustfix
|
||||
// edition 2018
|
||||
#![warn(future_prelude_collision)]
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
|
||||
trait MyTrait<A> {
|
||||
fn from_iter(x: Option<A>);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// check-pass
|
||||
// run-rustfix
|
||||
// edition 2018
|
||||
#![warn(future_prelude_collision)]
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
|
||||
trait MyTrait<A> {
|
||||
fn from_iter(x: Option<A>);
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ LL | <Vec<i32>>::from_iter(None);
|
|||
note: the lint level is defined here
|
||||
--> $DIR/generic-type-collision.rs:4:9
|
||||
|
|
||||
LL | #![warn(future_prelude_collision)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![warn(rust_2021_prelude_collisions)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
||||
= note: for more information, see issue #85684 <https://github.com/rust-lang/rust/issues/85684>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
// run-rustfix
|
||||
// edition:2018
|
||||
|
||||
#![warn(future_prelude_collision)]
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
|
||||
trait TryIntoU32 {
|
||||
fn try_into(&self) -> Result<u32, ()>;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
// run-rustfix
|
||||
// edition:2018
|
||||
|
||||
#![warn(future_prelude_collision)]
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
|
||||
trait TryIntoU32 {
|
||||
fn try_into(&self) -> Result<u32, ()>;
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ LL | get_dyn_trait().try_into().unwrap()
|
|||
note: the lint level is defined here
|
||||
--> $DIR/inherent-dyn-collision.rs:8:9
|
||||
|
|
||||
LL | #![warn(future_prelude_collision)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #![warn(rust_2021_prelude_collisions)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
|
||||
= note: for more information, see issue #85684 <https://github.com/rust-lang/rust/issues/85684>
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
//
|
||||
// check-pass
|
||||
|
||||
#![deny(future_prelude_collision)]
|
||||
#![deny(rust_2021_prelude_collisions)]
|
||||
|
||||
pub struct MySeq {}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// run-rustfix
|
||||
// compile-flags: -Z unstable-options --edition 2018
|
||||
|
||||
#![warn(reserved_prefix)]
|
||||
#![warn(rust_2021_prefixes_incompatible_syntax)]
|
||||
|
||||
macro_rules! m2 {
|
||||
($a:tt $b:tt) => {};
|
||||
|
|
@ -14,16 +14,16 @@ macro_rules! m3 {
|
|||
|
||||
fn main() {
|
||||
m2!(z "hey");
|
||||
//~^ WARNING prefix `z` is unknown [reserved_prefix]
|
||||
//~^ WARNING prefix `z` is unknown [rust_2021_prefixes_incompatible_syntax]
|
||||
//~| WARNING hard error in Rust 2021
|
||||
m2!(prefix "hey");
|
||||
//~^ WARNING prefix `prefix` is unknown [reserved_prefix]
|
||||
//~^ WARNING prefix `prefix` is unknown [rust_2021_prefixes_incompatible_syntax]
|
||||
//~| WARNING hard error in Rust 2021
|
||||
m3!(hey #123);
|
||||
//~^ WARNING prefix `hey` is unknown [reserved_prefix]
|
||||
//~^ WARNING prefix `hey` is unknown [rust_2021_prefixes_incompatible_syntax]
|
||||
//~| WARNING hard error in Rust 2021
|
||||
m3!(hey #hey);
|
||||
//~^ WARNING prefix `hey` is unknown [reserved_prefix]
|
||||
//~^ WARNING prefix `hey` is unknown [rust_2021_prefixes_incompatible_syntax]
|
||||
//~| WARNING hard error in Rust 2021
|
||||
}
|
||||
|
||||
|
|
@ -33,6 +33,6 @@ macro_rules! quote {
|
|||
|
||||
quote! {
|
||||
#name = #kind #value
|
||||
//~^ WARNING prefix `kind` is unknown [reserved_prefix]
|
||||
//~^ WARNING prefix `kind` is unknown [rust_2021_prefixes_incompatible_syntax]
|
||||
//~| WARNING hard error in Rust 2021
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// run-rustfix
|
||||
// compile-flags: -Z unstable-options --edition 2018
|
||||
|
||||
#![warn(reserved_prefix)]
|
||||
#![warn(rust_2021_prefixes_incompatible_syntax)]
|
||||
|
||||
macro_rules! m2 {
|
||||
($a:tt $b:tt) => {};
|
||||
|
|
@ -14,16 +14,16 @@ macro_rules! m3 {
|
|||
|
||||
fn main() {
|
||||
m2!(z"hey");
|
||||
//~^ WARNING prefix `z` is unknown [reserved_prefix]
|
||||
//~^ WARNING prefix `z` is unknown [rust_2021_prefixes_incompatible_syntax]
|
||||
//~| WARNING hard error in Rust 2021
|
||||
m2!(prefix"hey");
|
||||
//~^ WARNING prefix `prefix` is unknown [reserved_prefix]
|
||||
//~^ WARNING prefix `prefix` is unknown [rust_2021_prefixes_incompatible_syntax]
|
||||
//~| WARNING hard error in Rust 2021
|
||||
m3!(hey#123);
|
||||
//~^ WARNING prefix `hey` is unknown [reserved_prefix]
|
||||
//~^ WARNING prefix `hey` is unknown [rust_2021_prefixes_incompatible_syntax]
|
||||
//~| WARNING hard error in Rust 2021
|
||||
m3!(hey#hey);
|
||||
//~^ WARNING prefix `hey` is unknown [reserved_prefix]
|
||||
//~^ WARNING prefix `hey` is unknown [rust_2021_prefixes_incompatible_syntax]
|
||||
//~| WARNING hard error in Rust 2021
|
||||
}
|
||||
|
||||
|
|
@ -33,6 +33,6 @@ macro_rules! quote {
|
|||
|
||||
quote! {
|
||||
#name = #kind#value
|
||||
//~^ WARNING prefix `kind` is unknown [reserved_prefix]
|
||||
//~^ WARNING prefix `kind` is unknown [rust_2021_prefixes_incompatible_syntax]
|
||||
//~| WARNING hard error in Rust 2021
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ LL | m2!(z"hey");
|
|||
note: the lint level is defined here
|
||||
--> $DIR/reserved-prefixes-migration.rs:5:9
|
||||
|
|
||||
LL | #![warn(reserved_prefix)]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
LL | #![warn(rust_2021_prefixes_incompatible_syntax)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
|
||||
= note: for more information, see issue #84978 <https://github.com/rust-lang/rust/issues/84978>
|
||||
help: insert whitespace here to avoid this being parsed as a prefix in Rust 2021
|
||||
|
|
|
|||
|
|
@ -592,7 +592,7 @@ Released 2021-02-11
|
|||
|
||||
* Previously deprecated [`str_to_string`] and [`string_to_string`] have been un-deprecated
|
||||
as `restriction` lints [#6333](https://github.com/rust-lang/rust-clippy/pull/6333)
|
||||
* Deprecate `panic_params` lint. This is now available in rustc as `non_fmt_panic`
|
||||
* Deprecate `panic_params` lint. This is now available in rustc as `non_fmt_panics`
|
||||
[#6351](https://github.com/rust-lang/rust-clippy/pull/6351)
|
||||
* Move [`map_err_ignore`] to `restriction`
|
||||
[#6416](https://github.com/rust-lang/rust-clippy/pull/6416)
|
||||
|
|
|
|||
|
|
@ -2171,7 +2171,7 @@ pub fn register_renamed(ls: &mut rustc_lint::LintStore) {
|
|||
ls.register_renamed("clippy::unused_label", "unused_labels");
|
||||
ls.register_renamed("clippy::drop_bounds", "drop_bounds");
|
||||
ls.register_renamed("clippy::temporary_cstring_as_ptr", "temporary_cstring_as_ptr");
|
||||
ls.register_renamed("clippy::panic_params", "non_fmt_panic");
|
||||
ls.register_renamed("clippy::panic_params", "non_fmt_panics");
|
||||
ls.register_renamed("clippy::unknown_clippy_lints", "unknown_lints");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#![allow(non_fmt_panic)]
|
||||
#![allow(non_fmt_panics)]
|
||||
|
||||
macro_rules! assert_const {
|
||||
($len:expr) => {
|
||||
|
|
|
|||
|
|
@ -60,11 +60,11 @@ error: lint `clippy::temporary_cstring_as_ptr` has been renamed to `temporary_cs
|
|||
LL | #[warn(clippy::temporary_cstring_as_ptr)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `temporary_cstring_as_ptr`
|
||||
|
||||
error: lint `clippy::panic_params` has been renamed to `non_fmt_panic`
|
||||
error: lint `clippy::panic_params` has been renamed to `non_fmt_panics`
|
||||
--> $DIR/deprecated.rs:11:8
|
||||
|
|
||||
LL | #[warn(clippy::panic_params)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^ help: use the new name: `non_fmt_panic`
|
||||
| ^^^^^^^^^^^^^^^^^^^^ help: use the new name: `non_fmt_panics`
|
||||
|
||||
error: lint `clippy::unknown_clippy_lints` has been renamed to `unknown_lints`
|
||||
--> $DIR/deprecated.rs:12:8
|
||||
|
|
|
|||
|
|
@ -467,7 +467,9 @@ fn lint_name(line: &str) -> Result<String, &'static str> {
|
|||
return Err("lint name should end with comma");
|
||||
}
|
||||
let name = &name[..name.len() - 1];
|
||||
if !name.chars().all(|ch| ch.is_uppercase() || ch == '_') || name.is_empty() {
|
||||
if !name.chars().all(|ch| ch.is_uppercase() || ch.is_ascii_digit() || ch == '_')
|
||||
|| name.is_empty()
|
||||
{
|
||||
return Err("lint name did not have expected format");
|
||||
}
|
||||
Ok(name.to_lowercase().to_string())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue