diff options
Diffstat (limited to 'tests')
3 files changed, 68 insertions, 0 deletions
diff --git a/tests/mir-opt/elaborate_box_deref_in_debuginfo.pointee.ElaborateBoxDerefs.diff b/tests/mir-opt/elaborate_box_deref_in_debuginfo.pointee.ElaborateBoxDerefs.diff new file mode 100644 index 00000000000..279c1a1990d --- /dev/null +++ b/tests/mir-opt/elaborate_box_deref_in_debuginfo.pointee.ElaborateBoxDerefs.diff @@ -0,0 +1,13 @@ +- // MIR for `pointee` before ElaborateBoxDerefs ++ // MIR for `pointee` after ElaborateBoxDerefs + + fn pointee(_1: Box<i32>) -> () { +- debug foo => (*_1); ++ debug foo => (*(((_1.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32)); + let mut _0: (); + + bb0: { + return; + } + } + diff --git a/tests/mir-opt/elaborate_box_deref_in_debuginfo.rs b/tests/mir-opt/elaborate_box_deref_in_debuginfo.rs new file mode 100644 index 00000000000..0046e7104f1 --- /dev/null +++ b/tests/mir-opt/elaborate_box_deref_in_debuginfo.rs @@ -0,0 +1,20 @@ +// skip-filecheck +//@ test-mir-pass: ElaborateBoxDerefs + +#![feature(custom_mir, core_intrinsics)] + +extern crate core; +use core::intrinsics::mir::*; + +// EMIT_MIR elaborate_box_deref_in_debuginfo.pointee.ElaborateBoxDerefs.diff +#[custom_mir(dialect = "built")] +fn pointee(opt: Box<i32>) { + mir!( + debug foo => *opt; + { + Return() + } + ) +} + +fn main() {} diff --git a/tests/ui/async-await/async-closures/box-deref-in-debuginfo.rs b/tests/ui/async-await/async-closures/box-deref-in-debuginfo.rs new file mode 100644 index 00000000000..8b2de578b24 --- /dev/null +++ b/tests/ui/async-await/async-closures/box-deref-in-debuginfo.rs @@ -0,0 +1,35 @@ +//@ aux-build:block-on.rs +//@ edition:2021 +//@ run-pass + +#![feature(async_closure)] + +extern crate block_on; + +pub trait Trait { + fn callback(&mut self); +} +impl Trait for (i32,) { + fn callback(&mut self) { + println!("hi {}", self.0); + self.0 += 1; + } +} + +async fn call_once(f: impl async FnOnce()) { + f().await; +} + +async fn run(mut loader: Box<dyn Trait>) { + let f = async move || { + loader.callback(); + loader.callback(); + }; + call_once(f).await; +} + +fn main() { + block_on::block_on(async { + run(Box::new((42,))).await; + }); +} |
