diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2020-01-04 23:52:44 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-04 23:52:44 +0530 |
| commit | cce055daef93bfa50b11b1d3368811fe586d8a42 (patch) | |
| tree | 2adeeb04e178dd04953384d33a60f80ab58b6ef9 /src/test | |
| parent | cd8377d37e9bc47f9a5a982c41705a7800cbb51d (diff) | |
| parent | 27b25eb822d32911b73991c7fd6921fea609f825 (diff) | |
Rollup merge of #67137 - anp:tracked-panic-internals, r=eddyb
libstd uses `core::panic::Location` where possible. cc @eddyb
Diffstat (limited to 'src/test')
5 files changed, 26 insertions, 8 deletions
diff --git a/src/test/mir-opt/retain-never-const.rs b/src/test/mir-opt/retain-never-const.rs index 04394dcdf13..8e9bae8569f 100644 --- a/src/test/mir-opt/retain-never-const.rs +++ b/src/test/mir-opt/retain-never-const.rs @@ -6,6 +6,7 @@ #![feature(const_panic)] #![feature(never_type)] +#![warn(const_err)] struct PrintName<T>(T); diff --git a/src/test/ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.rs b/src/test/ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.rs index 8727c9d1ca6..74c6e501c91 100644 --- a/src/test/ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.rs +++ b/src/test/ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.rs @@ -22,7 +22,7 @@ //[thin]compile-flags: -C lto=thin //[fat]compile-flags: -C lto=fat -#![feature(core_panic, panic_internals)] +#![feature(core_panic)] // (For some reason, reproducing the LTO issue requires pulling in std // explicitly this way.) @@ -50,9 +50,7 @@ fn main() { } let _guard = Droppable; - let s = "issue-64655-allow-unwind-when-calling-panic-directly.rs"; - let location = core::panic::Location::internal_constructor(s, 17, 4); - core::panicking::panic("???", &location); + core::panicking::panic("???"); }); let wait = handle.join(); diff --git a/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs b/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs index 0a79aea376f..090e912c1d0 100644 --- a/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs +++ b/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs @@ -4,16 +4,16 @@ #[inline(never)] #[track_caller] -fn defeat_const_prop() -> &'static core::panic::Location<'static> { +fn codegen_caller_loc() -> &'static core::panic::Location<'static> { core::panic::Location::caller() } macro_rules! caller_location_from_macro { - () => (defeat_const_prop()); + () => (codegen_caller_loc()); } fn main() { - let loc = defeat_const_prop(); + let loc = codegen_caller_loc(); assert_eq!(loc.file(), file!()); assert_eq!(loc.line(), 16); assert_eq!(loc.column(), 15); diff --git a/src/test/ui/rfc-2091-track-caller/diverging-caller-location.rs b/src/test/ui/rfc-2091-track-caller/diverging-caller-location.rs new file mode 100644 index 00000000000..1fb75ef35ff --- /dev/null +++ b/src/test/ui/rfc-2091-track-caller/diverging-caller-location.rs @@ -0,0 +1,19 @@ +// run-fail + +//! This test ensures that `#[track_caller]` can be applied directly to diverging functions, as +//! the tracking issue says: https://github.com/rust-lang/rust/issues/47809#issue-292138490. +//! Because the annotated function must diverge and a panic keeps that faster than an infinite loop, +//! we don't inspect the location returned -- it would be difficult to distinguish between the +//! explicit panic and a failed assertion. That it compiles and runs is enough for this one. + +#![feature(track_caller)] + +#[track_caller] +fn doesnt_return() -> ! { + let _location = core::panic::Location::caller(); + panic!("huzzah"); +} + +fn main() { + doesnt_return(); +} diff --git a/src/test/ui/rfc-2091-track-caller/track-caller-attribute.rs b/src/test/ui/rfc-2091-track-caller/track-caller-attribute.rs index 8436ee510a5..76a380ed3e3 100644 --- a/src/test/ui/rfc-2091-track-caller/track-caller-attribute.rs +++ b/src/test/ui/rfc-2091-track-caller/track-caller-attribute.rs @@ -1,6 +1,6 @@ // run-pass -#![feature(const_fn, track_caller)] +#![feature(track_caller)] use std::panic::Location; |
