From 75e0263af9ca27eac2c922538582deec764d1e7b Mon Sep 17 00:00:00 2001 From: Oneirical Date: Sun, 13 Jul 2025 16:56:31 -0400 Subject: Rehome tests/ui/issues/ tests [5/?] --- .../ref-in-function-parameter-patterns-8860.rs | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 tests/ui/pattern/ref-in-function-parameter-patterns-8860.rs (limited to 'tests/ui/pattern/ref-in-function-parameter-patterns-8860.rs') diff --git a/tests/ui/pattern/ref-in-function-parameter-patterns-8860.rs b/tests/ui/pattern/ref-in-function-parameter-patterns-8860.rs new file mode 100644 index 00000000000..1a67caf021c --- /dev/null +++ b/tests/ui/pattern/ref-in-function-parameter-patterns-8860.rs @@ -0,0 +1,52 @@ +// https://github.com/rust-lang/rust/issues/8860 +//@ run-pass +// FIXME(static_mut_refs): this could use an atomic +#![allow(static_mut_refs)] +#![allow(dead_code)] + +static mut DROP: isize = 0; +static mut DROP_S: isize = 0; +static mut DROP_T: isize = 0; + +struct S; +impl Drop for S { + fn drop(&mut self) { + unsafe { + DROP_S += 1; + DROP += 1; + } + } +} +fn f(ref _s: S) {} + +struct T { i: isize } +impl Drop for T { + fn drop(&mut self) { + unsafe { + DROP_T += 1; + DROP += 1; + } + } +} +fn g(ref _t: T) {} + +fn do_test() { + let s = S; + f(s); + unsafe { + assert_eq!(1, DROP); + assert_eq!(1, DROP_S); + } + let t = T { i: 1 }; + g(t); + unsafe { assert_eq!(1, DROP_T); } +} + +fn main() { + do_test(); + unsafe { + assert_eq!(2, DROP); + assert_eq!(1, DROP_S); + assert_eq!(1, DROP_T); + } +} -- cgit 1.4.1-3-g733a5