diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2017-12-20 11:20:07 -0500 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2017-12-20 14:38:13 -0500 |
| commit | 3f490ca4bdb151b7b72bf6647d0bc4de5951667c (patch) | |
| tree | 0941bc9bb9050e564eaf7757f9a357103e3c5dc2 /src/test/mir-opt | |
| parent | cba82561cf0773b8a2bc3358313e555ffd0352c3 (diff) | |
| download | rust-3f490ca4bdb151b7b72bf6647d0bc4de5951667c.tar.gz rust-3f490ca4bdb151b7b72bf6647d0bc4de5951667c.zip | |
convert region-liveness-drop{-,-no-}may-dangle.rs into ui tests
The "match exact bits of CFG" approach was fragile and uninformative.
Diffstat (limited to 'src/test/mir-opt')
| -rw-r--r-- | src/test/mir-opt/nll/region-liveness-drop-may-dangle.rs | 50 | ||||
| -rw-r--r-- | src/test/mir-opt/nll/region-liveness-drop-no-may-dangle.rs | 52 |
2 files changed, 0 insertions, 102 deletions
diff --git a/src/test/mir-opt/nll/region-liveness-drop-may-dangle.rs b/src/test/mir-opt/nll/region-liveness-drop-may-dangle.rs deleted file mode 100644 index c14ce6bb581..00000000000 --- a/src/test/mir-opt/nll/region-liveness-drop-may-dangle.rs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2012-2016 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// Basic test for liveness constraints: the region (`R1`) that appears -// in the type of `p` includes the points after `&v[0]` up to (but not -// including) the call to `use_x`. The `else` branch is not included. - -// compile-flags:-Znll -Zverbose -// ^^^^^^^^^ force compiler to dump more region information - -#![allow(warnings)] -#![feature(dropck_eyepatch)] -#![feature(generic_param_attrs)] - -fn use_x(_: usize) -> bool { true } - -fn main() { - let mut v = [1, 2, 3]; - let p: Wrap<& /* R4 */ usize> = Wrap { value: &v[0] }; - if true { - use_x(*p.value); - } else { - use_x(22); - } - - // `p` will get dropped here. However, because of the - // `#[may_dangle]` attribute, we do not need to consider R4 live. -} - -struct Wrap<T> { - value: T -} - -unsafe impl<#[may_dangle] T> Drop for Wrap<T> { - fn drop(&mut self) { } -} - -// END RUST SOURCE -// START rustc.main.nll.0.mir -// | '_#6r | {bb2[3..=5], bb3[0..=1]} -// ... -// let _2: Wrap<&'_#6r usize>; -// END rustc.main.nll.0.mir diff --git a/src/test/mir-opt/nll/region-liveness-drop-no-may-dangle.rs b/src/test/mir-opt/nll/region-liveness-drop-no-may-dangle.rs deleted file mode 100644 index 058a57fe612..00000000000 --- a/src/test/mir-opt/nll/region-liveness-drop-no-may-dangle.rs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2012-2016 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// Basic test for liveness constraints: the region (`R1`) that appears -// in the type of `p` includes the points after `&v[0]` up to (but not -// including) the call to `use_x`. The `else` branch is not included. - -// ignore-tidy-linelength -// compile-flags:-Znll -Zverbose -// ^^^^^^^^^ force compiler to dump more region information - -#![allow(warnings)] - -fn use_x(_: usize) -> bool { true } - -fn main() { - let mut v = [1, 2, 3]; - let p: Wrap<& /* R1 */ usize> = Wrap { value: &v[0] }; - if true { - use_x(*p.value); - } else { - use_x(22); - } - - // `p` will get dropped here. Because the `#[may_dangle]` - // attribute is not present on `Wrap`, we must conservatively - // assume that the dtor may access the `value` field, and hence we - // must consider R1 to be live. -} - -struct Wrap<T> { - value: T -} - -// Look ma, no `#[may_dangle]` attribute here. -impl<T> Drop for Wrap<T> { - fn drop(&mut self) { } -} - -// END RUST SOURCE -// START rustc.main.nll.0.mir -// | '_#6r | {bb2[3..=5], bb3[0..=2], bb4[0], bb5[0..=2], bb6[0], bb7[0..=1], bb8[0]} -// ... -// let _2: Wrap<&'_#6r usize>; -// END rustc.main.nll.0.mir |
