diff options
| author | Kivooeo <Kivooeo123@gmail.com> | 2025-06-30 00:05:58 +0500 |
|---|---|---|
| committer | Kivooeo <Kivooeo123@gmail.com> | 2025-07-01 15:16:56 +0500 |
| commit | da5c6395dad7c5be33f842c3660ae2f6af287f3a (patch) | |
| tree | ecdab72d5ce57382b83a6abcce3e2a693ba5a192 /tests/ui/drop/field-replace-in-struct-with-drop.rs | |
| parent | 4feb5de34c1e41da0c10e149e243a25a6eafcd17 (diff) | |
| download | rust-da5c6395dad7c5be33f842c3660ae2f6af287f3a.tar.gz rust-da5c6395dad7c5be33f842c3660ae2f6af287f3a.zip | |
cleaned up some tests
Diffstat (limited to 'tests/ui/drop/field-replace-in-struct-with-drop.rs')
| -rw-r--r-- | tests/ui/drop/field-replace-in-struct-with-drop.rs | 48 |
1 files changed, 21 insertions, 27 deletions
diff --git a/tests/ui/drop/field-replace-in-struct-with-drop.rs b/tests/ui/drop/field-replace-in-struct-with-drop.rs index e1d5e9c5268..8c65a4b3ad1 100644 --- a/tests/ui/drop/field-replace-in-struct-with-drop.rs +++ b/tests/ui/drop/field-replace-in-struct-with-drop.rs @@ -1,22 +1,17 @@ -// Issue 34101: Circa 2016-06-05, `fn inline` below issued an -// erroneous warning from the elaborate_drops pass about moving out of -// a field in `Foo`, which has a destructor (and thus cannot have -// content moved out of it). The reason that the warning is erroneous -// in this case is that we are doing a *replace*, not a move, of the -// content in question, and it is okay to replace fields within `Foo`. -// -// Another more subtle problem was that the elaborate_drops was -// creating a separate drop flag for that internally replaced content, -// even though the compiler should enforce an invariant that any drop -// flag for such subcontent of `Foo` will always have the same value -// as the drop flag for `Foo` itself. - - - - - - - +//! Circa 2016-06-05, `fn inline` below issued an +//! erroneous warning from the elaborate_drops pass about moving out of +//! a field in `Foo`, which has a destructor (and thus cannot have +//! content moved out of it). The reason that the warning is erroneous +//! in this case is that we are doing a *replace*, not a move, of the +//! content in question, and it is okay to replace fields within `Foo`. +//! +//! Another more subtle problem was that the elaborate_drops was +//! creating a separate drop flag for that internally replaced content, +//! even though the compiler should enforce an invariant that any drop +//! flag for such subcontent of `Foo` will always have the same value +//! as the drop flag for `Foo` itself. +//! +//! Regression test for <https://github.com/rust-lang/rust/issues/34101>. //@ check-pass @@ -26,21 +21,20 @@ impl Drop for Foo { fn drop(&mut self) {} } -fn inline() { - // (dummy variable so `f` gets assigned `var1` in MIR for both fn's) +fn test_inline_replacement() { + // dummy variable so `f` gets assigned `var1` in MIR for both functions let _s = (); let mut f = Foo(String::from("foo")); - f.0 = String::from("bar"); + f.0 = String::from("bar"); // This should not warn } -fn outline() { +fn test_outline_replacement() { let _s = String::from("foo"); let mut f = Foo(_s); - f.0 = String::from("bar"); + f.0 = String::from("bar"); // This should not warn either } - fn main() { - inline(); - outline(); + test_inline_replacement(); + test_outline_replacement(); } |
