Skip to content

Commit

Permalink
Permit const assertions in stdlib
Browse files Browse the repository at this point in the history
  • Loading branch information
jhpratt committed Nov 8, 2021
1 parent 089a016 commit 6d2f8af
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 2 deletions.
1 change: 1 addition & 0 deletions library/core/src/panicking.rs
Expand Up @@ -36,6 +36,7 @@ use crate::panic::{Location, PanicInfo};
#[cfg_attr(not(feature = "panic_immediate_abort"), inline(never))]
#[cfg_attr(feature = "panic_immediate_abort", inline)]
#[track_caller]
#[rustc_const_unstable(feature = "core_panic", issue = "none")]
#[lang = "panic"] // needed by codegen for panic on overflow and other `Assert` MIR terminators
pub const fn panic(expr: &'static str) -> ! {
// Use Arguments::new_v1 instead of format_args!("{}", expr) to potentially
Expand Down
4 changes: 2 additions & 2 deletions library/core/src/time.rs
Expand Up @@ -727,7 +727,7 @@ impl Duration {
pub const fn from_secs_f64(secs: f64) -> Duration {
match Duration::try_from_secs_f64(secs) {
Ok(v) => v,
Err(e) => crate::panicking::panic(e.description()),
Err(e) => panic!("{}", e.description()),
}
}

Expand Down Expand Up @@ -788,7 +788,7 @@ impl Duration {
pub const fn from_secs_f32(secs: f32) -> Duration {
match Duration::try_from_secs_f32(secs) {
Ok(v) => v,
Err(e) => crate::panicking::panic(e.description()),
Err(e) => panic!("{}", e.description()),
}
}

Expand Down
16 changes: 16 additions & 0 deletions src/test/ui/consts/const-eval/const_panic_stability.e2018.stderr
@@ -0,0 +1,16 @@
warning: panic message is not a string literal
--> $DIR/const_panic_stability.rs:14:12
|
LL | panic!({ "foo" });
| ^^^^^^^^^
|
= note: `#[warn(non_fmt_panics)]` on by default
= note: this usage of panic!() is deprecated; it will be a hard error in Rust 2021
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
help: add a "{}" format string to Display the message
|
LL | panic!("{}", { "foo" });
| +++++

warning: 1 warning emitted

13 changes: 13 additions & 0 deletions src/test/ui/consts/const-eval/const_panic_stability.e2021.stderr
@@ -0,0 +1,13 @@
error: format argument must be a string literal
--> $DIR/const_panic_stability.rs:14:12
|
LL | panic!({ "foo" });
| ^^^^^^^^^
|
help: you might be missing a string literal to format with
|
LL | panic!("{}", { "foo" });
| +++++

error: aborting due to previous error

17 changes: 17 additions & 0 deletions src/test/ui/consts/const-eval/const_panic_stability.rs
@@ -0,0 +1,17 @@
// revisions: e2018 e2021
//[e2018] edition:2018
//[e2021] edition:2021
//[e2018] check-pass
#![crate_type = "lib"]
#![stable(feature = "foo", since = "1.0.0")]
#![feature(staged_api)]

#[stable(feature = "foo", since = "1.0.0")]
#[rustc_const_stable(feature = "foo", since = "1.0.0")]
const fn foo() {
assert!(false);
assert!(false, "foo");
panic!({ "foo" });
//[e2018]~^ WARNING panic message is not a string literal
//[e2021]~^^ ERROR format argument must be a string literal
}

0 comments on commit 6d2f8af

Please sign in to comment.