Skip to content

Commit

Permalink
Test cleanups to match #[track_caller] in panic!.
Browse files Browse the repository at this point in the history
* Removes unnecessary feature flag from track_caller test.
* Tests of panic internals no longer need to explicitly construct Location.
* Add #![warn(const_err)] to retain-never-const per @oli-obk.
* Add track_caller test with diverging function.
  • Loading branch information
anp committed Jan 4, 2020
1 parent eaccda0 commit e218da4
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 8 deletions.
1 change: 1 addition & 0 deletions src/test/mir-opt/retain-never-const.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#![feature(const_panic)]
#![feature(never_type)]
#![warn(const_err)]

struct PrintName<T>(T);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.)
Expand Down Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
19 changes: 19 additions & 0 deletions src/test/ui/rfc-2091-track-caller/diverging-caller-location.rs
Original file line number Diff line number Diff line change
@@ -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();
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// run-pass

#![feature(const_fn, track_caller)]
#![feature(track_caller)]

use std::panic::Location;

Expand Down

0 comments on commit e218da4

Please sign in to comment.