diff options
| author | bors <bors@rust-lang.org> | 2018-08-26 04:02:19 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-08-26 04:02:19 +0000 |
| commit | 691638582ad1029e77e4ceec3a5f0f6a6449841b (patch) | |
| tree | ae6bac52a73cca46785ba3680eaecdb27cad7dbe | |
| parent | 36f14b95a2a2849600f7719007b5fe9c4e9bb569 (diff) | |
| parent | 40a38b01641d453a7b0f4d6af853d06b8cfef161 (diff) | |
| download | rust-691638582ad1029e77e4ceec3a5f0f6a6449841b.tar.gz rust-691638582ad1029e77e4ceec3a5f0f6a6449841b.zip | |
Auto merge of #53619 - japaric:panic-handler, r=SimonSapin
add #[panic_handler]; deprecate #[panic_implementation] r? @SimonSapin cc #44489
44 files changed, 164 insertions, 79 deletions
diff --git a/src/doc/unstable-book/src/language-features/used.md b/src/doc/unstable-book/src/language-features/used.md index c3b7f2e41e1..d49271382b6 100644 --- a/src/doc/unstable-book/src/language-features/used.md +++ b/src/doc/unstable-book/src/language-features/used.md @@ -87,7 +87,7 @@ This condition can be met using `#[used]` and `#[link_section]` plus a linker script. ``` rust,ignore -#![feature(panic_implementation)] +#![feature(panic_handler)] #![feature(used)] #![no_main] #![no_std] @@ -102,8 +102,8 @@ extern "C" fn reset_handler() -> ! { #[used] static RESET_HANDLER: extern "C" fn() -> ! = reset_handler; -#[panic_implementation] -fn panic_impl(info: &PanicInfo) -> ! { +#[panic_handler] +fn panic(info: &PanicInfo) -> ! { loop {} } ``` diff --git a/src/librustc/middle/dead.rs b/src/librustc/middle/dead.rs index ba04842ac7c..30701654f29 100644 --- a/src/librustc/middle/dead.rs +++ b/src/librustc/middle/dead.rs @@ -293,7 +293,9 @@ fn has_allow_dead_code_or_lang_attr(tcx: TyCtxt, } // (To be) stable attribute for #[lang = "panic_impl"] - if attr::contains_name(attrs, "panic_implementation") { + if attr::contains_name(attrs, "panic_implementation") || + attr::contains_name(attrs, "panic_handler") + { return true; } diff --git a/src/librustc/middle/lang_items.rs b/src/librustc/middle/lang_items.rs index 8c300a0aba0..d92f856fa4d 100644 --- a/src/librustc/middle/lang_items.rs +++ b/src/librustc/middle/lang_items.rs @@ -185,7 +185,9 @@ pub fn extract(attrs: &[ast::Attribute]) -> Option<(Symbol, Span)> { if let Some(value) = attribute.value_str() { return Some((value, attribute.span)); } - } else if attribute.check_name("panic_implementation") { + } else if attribute.check_name("panic_implementation") || + attribute.check_name("panic_handler") + { return Some((Symbol::intern("panic_impl"), attribute.span)) } else if attribute.check_name("alloc_error_handler") { return Some((Symbol::intern("oom"), attribute.span)) diff --git a/src/librustc/middle/weak_lang_items.rs b/src/librustc/middle/weak_lang_items.rs index e8431ce3e10..bfc27e3b580 100644 --- a/src/librustc/middle/weak_lang_items.rs +++ b/src/librustc/middle/weak_lang_items.rs @@ -113,7 +113,7 @@ fn verify<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, !whitelisted(tcx, lang_items::$item) && items.$name().is_none() { if lang_items::$item == lang_items::PanicImplLangItem { - tcx.sess.err(&format!("`#[panic_implementation]` function required, \ + tcx.sess.err(&format!("`#[panic_handler]` function required, \ but not found")); } else if lang_items::$item == lang_items::OomLangItem { tcx.sess.err(&format!("`#[alloc_error_handler]` function required, \ diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index 819827abd05..2b33f289346 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -1172,8 +1172,7 @@ fn check_fn<'a, 'gcx, 'tcx>(inherited: &'a Inherited<'a, 'gcx, 'tcx>, if !generics.params.is_empty() { fcx.tcx.sess.span_err( span, - "`#[panic_implementation]` function should have no type \ - parameters", + "should have no type parameters", ); } } diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index 8b424716746..f8b425bc785 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -309,7 +309,8 @@ #![feature(doc_alias)] #![feature(doc_keyword)] #![feature(panic_info_message)] -#![feature(panic_implementation)] +#![cfg_attr(stage0, feature(panic_implementation))] +#![cfg_attr(not(stage0), feature(panic_handler))] #![feature(non_exhaustive)] #![default_lib_allocator] diff --git a/src/libstd/panicking.rs b/src/libstd/panicking.rs index 862f0fd71b0..6eb2db8e63b 100644 --- a/src/libstd/panicking.rs +++ b/src/libstd/panicking.rs @@ -319,7 +319,8 @@ pub fn panicking() -> bool { /// Entry point of panic from the libcore crate. #[cfg(not(test))] -#[panic_implementation] +#[cfg_attr(stage0, panic_implementation)] +#[cfg_attr(not(stage0), panic_handler)] #[unwind(allowed)] pub fn rust_begin_panic(info: &PanicInfo) -> ! { continue_panic_fmt(&info) diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index e2a22167b7e..6dd788bf6e2 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -469,8 +469,9 @@ declare_features! ( // Integer match exhaustiveness checking (active, exhaustive_integer_patterns, "1.30.0", Some(50907), None), - // #[panic_implementation] + // RFC 2070: #[panic_implementation] / #[panic_handler] (active, panic_implementation, "1.28.0", Some(44489), None), + (active, panic_handler, "1.30.0", Some(44489), None), // #[doc(keyword = "...")] (active, doc_keyword, "1.28.0", Some(51315), None), @@ -1109,11 +1110,20 @@ pub const BUILTIN_ATTRIBUTES: &'static [(&'static str, AttributeType, AttributeG "infer 'static lifetime requirements", cfg_fn!(infer_static_outlives_requirements))), + // RFC 2070 (deprecated attribute name) + ("panic_implementation", + Normal, + Gated(Stability::Deprecated("https://github.com/rust-lang/rust/issues/44489\ + #issuecomment-415140224"), + "panic_implementation", + "This attribute was renamed to `panic_handler`", + cfg_fn!(panic_implementation))), + // RFC 2070 - ("panic_implementation", Normal, Gated(Stability::Unstable, - "panic_implementation", - "#[panic_implementation] is an unstable feature", - cfg_fn!(panic_implementation))), + ("panic_handler", Normal, Gated(Stability::Unstable, + "panic_handler", + "#[panic_handler] is an unstable feature", + cfg_fn!(panic_handler))), ("alloc_error_handler", Normal, Gated(Stability::Unstable, "alloc_error_handler", diff --git a/src/test/compile-fail/auxiliary/some-panic-impl.rs b/src/test/compile-fail/auxiliary/some-panic-impl.rs index db16ac325ac..e3b4fba176e 100644 --- a/src/test/compile-fail/auxiliary/some-panic-impl.rs +++ b/src/test/compile-fail/auxiliary/some-panic-impl.rs @@ -11,12 +11,12 @@ // no-prefer-dynamic #![crate_type = "rlib"] -#![feature(panic_implementation)] +#![feature(panic_handler)] #![no_std] use core::panic::PanicInfo; -#[panic_implementation] +#[panic_handler] fn panic(info: &PanicInfo) -> ! { loop {} } diff --git a/src/test/compile-fail/panic-implementation-missing.rs b/src/test/compile-fail/panic-handler-missing.rs index b11081a3e3b..d17c19b4c13 100644 --- a/src/test/compile-fail/panic-implementation-missing.rs +++ b/src/test/compile-fail/panic-handler-missing.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// error-pattern: `#[panic_implementation]` function required, but not found +// error-pattern: `#[panic_handler]` function required, but not found #![feature(lang_items)] #![no_main] diff --git a/src/test/compile-fail/panic-implementation-twice.rs b/src/test/compile-fail/panic-handler-twice.rs index 78dc545c036..6c9515ca909 100644 --- a/src/test/compile-fail/panic-implementation-twice.rs +++ b/src/test/compile-fail/panic-handler-twice.rs @@ -10,7 +10,7 @@ // aux-build:some-panic-impl.rs -#![feature(panic_implementation)] +#![feature(panic_handler)] #![feature(lang_items)] #![no_std] #![no_main] @@ -19,7 +19,7 @@ extern crate some_panic_impl; use core::panic::PanicInfo; -#[panic_implementation] +#[panic_handler] fn panic(info: &PanicInfo) -> ! { //~^ error duplicate lang item found: `panic_impl` loop {} diff --git a/src/test/compile-fail/weak-lang-item.rs b/src/test/compile-fail/weak-lang-item.rs index 42972c40674..493c7080181 100644 --- a/src/test/compile-fail/weak-lang-item.rs +++ b/src/test/compile-fail/weak-lang-item.rs @@ -9,7 +9,7 @@ // except according to those terms. // aux-build:weak-lang-items.rs -// error-pattern: `#[panic_implementation]` function required, but not found +// error-pattern: `#[panic_handler]` function required, but not found // error-pattern: language item required, but not found: `eh_personality` // ignore-wasm32-bare compiled with panic=abort, personality not required diff --git a/src/test/run-make-fulldeps/issue-51671/app.rs b/src/test/run-make-fulldeps/issue-51671/app.rs index 453602b800b..e980b12039e 100644 --- a/src/test/run-make-fulldeps/issue-51671/app.rs +++ b/src/test/run-make-fulldeps/issue-51671/app.rs @@ -10,14 +10,14 @@ #![crate_type = "bin"] #![feature(lang_items)] -#![feature(panic_implementation)] +#![feature(panic_handler)] #![no_main] #![no_std] use core::alloc::Layout; use core::panic::PanicInfo; -#[panic_implementation] +#[panic_handler] fn panic(_: &PanicInfo) -> ! { loop {} } diff --git a/src/test/run-make-fulldeps/panic-impl-transitive/panic-impl-provider.rs b/src/test/run-make-fulldeps/panic-impl-transitive/panic-impl-provider.rs index 46cdf2e2fa5..065b2b6bf18 100644 --- a/src/test/run-make-fulldeps/panic-impl-transitive/panic-impl-provider.rs +++ b/src/test/run-make-fulldeps/panic-impl-transitive/panic-impl-provider.rs @@ -9,12 +9,12 @@ // except according to those terms. #![crate_type = "rlib"] -#![feature(panic_implementation)] +#![feature(panic_handler)] #![no_std] use core::panic::PanicInfo; -#[panic_implementation] +#[panic_handler] fn panic(info: &PanicInfo) -> ! { loop {} } diff --git a/src/test/run-make/wasm-symbols-not-exported/bar.rs b/src/test/run-make/wasm-symbols-not-exported/bar.rs index 979ec44b040..061280779b0 100644 --- a/src/test/run-make/wasm-symbols-not-exported/bar.rs +++ b/src/test/run-make/wasm-symbols-not-exported/bar.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(panic_implementation, alloc_error_handler)] +#![feature(panic_handler, alloc_error_handler)] #![crate_type = "cdylib"] #![no_std] @@ -39,7 +39,7 @@ fn a(_: core::alloc::Layout) -> ! { loop {} } -#[panic_implementation] +#[panic_handler] fn b(_: &core::panic::PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-1.rs b/src/test/ui/alloc-error/alloc-error-handler-bad-signature-1.rs index e398f16a065..0a54ae8341b 100644 --- a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-1.rs +++ b/src/test/ui/alloc-error/alloc-error-handler-bad-signature-1.rs @@ -10,7 +10,7 @@ // compile-flags:-C panic=abort -#![feature(alloc_error_handler, panic_implementation)] +#![feature(alloc_error_handler, panic_handler)] #![no_std] #![no_main] @@ -24,5 +24,5 @@ fn oom( loop {} } -#[panic_implementation] +#[panic_handler] fn panic(_: &core::panic::PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-2.rs b/src/test/ui/alloc-error/alloc-error-handler-bad-signature-2.rs index 4fee9d27e51..b33d82cd550 100644 --- a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-2.rs +++ b/src/test/ui/alloc-error/alloc-error-handler-bad-signature-2.rs @@ -10,7 +10,7 @@ // compile-flags:-C panic=abort -#![feature(alloc_error_handler, panic_implementation)] +#![feature(alloc_error_handler, panic_handler)] #![no_std] #![no_main] @@ -23,5 +23,5 @@ fn oom( loop {} } -#[panic_implementation] +#[panic_handler] fn panic(_: &core::panic::PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-3.rs b/src/test/ui/alloc-error/alloc-error-handler-bad-signature-3.rs index 828a78055d5..0e102dd08ea 100644 --- a/src/test/ui/alloc-error/alloc-error-handler-bad-signature-3.rs +++ b/src/test/ui/alloc-error/alloc-error-handler-bad-signature-3.rs @@ -10,7 +10,7 @@ // compile-flags:-C panic=abort -#![feature(alloc_error_handler, panic_implementation)] +#![feature(alloc_error_handler, panic_handler)] #![no_std] #![no_main] @@ -21,5 +21,5 @@ fn oom() -> ! { //~ ERROR function should have one argument loop {} } -#[panic_implementation] +#[panic_handler] fn panic(_: &core::panic::PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/consts/const-eval/const_panic_libcore_main.rs b/src/test/ui/consts/const-eval/const_panic_libcore_main.rs index c66e1fe4bf5..f5e5f9778fa 100644 --- a/src/test/ui/consts/const-eval/const_panic_libcore_main.rs +++ b/src/test/ui/consts/const-eval/const_panic_libcore_main.rs @@ -10,7 +10,7 @@ #![crate_type = "bin"] #![feature(lang_items)] -#![feature(panic_implementation)] +#![feature(panic_handler)] #![feature(const_panic)] #![no_main] #![no_std] @@ -31,7 +31,7 @@ fn eh() {} #[lang = "eh_unwind_resume"] fn eh_unwind_resume() {} -#[panic_implementation] +#[panic_handler] fn panic(_info: &PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/feature-gates/feature-gate-panic-handler.rs b/src/test/ui/feature-gates/feature-gate-panic-handler.rs new file mode 100644 index 00000000000..fd16268ef8b --- /dev/null +++ b/src/test/ui/feature-gates/feature-gate-panic-handler.rs @@ -0,0 +1,21 @@ +// Copyright 2018 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. + +// compile-flags:-C panic=abort + +#![no_std] +#![no_main] + +use core::panic::PanicInfo; + +#[panic_handler] //~ ERROR #[panic_handler] is an unstable feature (see issue #44489) +fn panic(info: &PanicInfo) -> ! { + loop {} +} diff --git a/src/test/ui/feature-gates/feature-gate-panic-handler.stderr b/src/test/ui/feature-gates/feature-gate-panic-handler.stderr new file mode 100644 index 00000000000..9680a240a99 --- /dev/null +++ b/src/test/ui/feature-gates/feature-gate-panic-handler.stderr @@ -0,0 +1,11 @@ +error[E0658]: #[panic_handler] is an unstable feature (see issue #44489) + --> $DIR/feature-gate-panic-handler.rs:18:1 + | +LL | #[panic_handler] //~ ERROR #[panic_handler] is an unstable feature (see issue #44489) + | ^^^^^^^^^^^^^^^^ + | + = help: add #![feature(panic_handler)] to the crate attributes to enable + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/feature-gates/feature-gate-panic-implementation.rs b/src/test/ui/feature-gates/feature-gate-panic-implementation.rs index ae9fbc7b13b..84e5f302c16 100644 --- a/src/test/ui/feature-gates/feature-gate-panic-implementation.rs +++ b/src/test/ui/feature-gates/feature-gate-panic-implementation.rs @@ -15,7 +15,7 @@ use core::panic::PanicInfo; -#[panic_implementation] //~ ERROR #[panic_implementation] is an unstable feature (see issue #44489) +#[panic_implementation] //~ ERROR This attribute was renamed to `panic_handler` (see issue #44489) fn panic(info: &PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/feature-gates/feature-gate-panic-implementation.stderr b/src/test/ui/feature-gates/feature-gate-panic-implementation.stderr index f99228bef1d..926a49ae831 100644 --- a/src/test/ui/feature-gates/feature-gate-panic-implementation.stderr +++ b/src/test/ui/feature-gates/feature-gate-panic-implementation.stderr @@ -1,7 +1,7 @@ -error[E0658]: #[panic_implementation] is an unstable feature (see issue #44489) +error[E0658]: This attribute was renamed to `panic_handler` (see issue #44489) --> $DIR/feature-gate-panic-implementation.rs:18:1 | -LL | #[panic_implementation] //~ ERROR #[panic_implementation] is an unstable feature (see issue #44489) +LL | #[panic_implementation] //~ ERROR This attribute was renamed to `panic_handler` (see issue #44489) | ^^^^^^^^^^^^^^^^^^^^^^^ | = help: add #![feature(panic_implementation)] to the crate attributes to enable diff --git a/src/test/ui/missing/missing-alloc_error_handler.rs b/src/test/ui/missing/missing-alloc_error_handler.rs index 3842d48f8fa..1096027c8dc 100644 --- a/src/test/ui/missing/missing-alloc_error_handler.rs +++ b/src/test/ui/missing/missing-alloc_error_handler.rs @@ -13,9 +13,9 @@ #![no_std] #![crate_type = "staticlib"] -#![feature(panic_implementation, alloc_error_handler, alloc)] +#![feature(panic_handler, alloc_error_handler, alloc)] -#[panic_implementation] +#[panic_handler] fn panic(_: &core::panic::PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/missing/missing-allocator.rs b/src/test/ui/missing/missing-allocator.rs index c949dcb635a..f4331c4b994 100644 --- a/src/test/ui/missing/missing-allocator.rs +++ b/src/test/ui/missing/missing-allocator.rs @@ -13,9 +13,9 @@ #![no_std] #![crate_type = "staticlib"] -#![feature(panic_implementation, alloc_error_handler, alloc)] +#![feature(panic_handler, alloc_error_handler, alloc)] -#[panic_implementation] +#[panic_handler] fn panic(_: &core::panic::PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/panic-implementation/auxiliary/some-panic-impl.rs b/src/test/ui/panic-handler/auxiliary/some-panic-impl.rs index db16ac325ac..e3b4fba176e 100644 --- a/src/test/ui/panic-implementation/auxiliary/some-panic-impl.rs +++ b/src/test/ui/panic-handler/auxiliary/some-panic-impl.rs @@ -11,12 +11,12 @@ // no-prefer-dynamic #![crate_type = "rlib"] -#![feature(panic_implementation)] +#![feature(panic_handler)] #![no_std] use core::panic::PanicInfo; -#[panic_implementation] +#[panic_handler] fn panic(info: &PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/panic-implementation/panic-implementation-bad-signature-1.rs b/src/test/ui/panic-handler/panic-handler-bad-signature-1.rs index fec11fdbd7b..cc7e337fc9e 100644 --- a/src/test/ui/panic-implementation/panic-implementation-bad-signature-1.rs +++ b/src/test/ui/panic-handler/panic-handler-bad-signature-1.rs @@ -10,13 +10,13 @@ // compile-flags:-C panic=abort -#![feature(panic_implementation)] +#![feature(panic_handler)] #![no_std] #![no_main] use core::panic::PanicInfo; -#[panic_implementation] +#[panic_handler] fn panic( info: PanicInfo, //~ ERROR argument should be `&PanicInfo` ) -> () //~ ERROR return type should be `!` diff --git a/src/test/ui/panic-implementation/panic-implementation-bad-signature-1.stderr b/src/test/ui/panic-handler/panic-handler-bad-signature-1.stderr index 0e020fbc78b..5771f4277b4 100644 --- a/src/test/ui/panic-implementation/panic-implementation-bad-signature-1.stderr +++ b/src/test/ui/panic-handler/panic-handler-bad-signature-1.stderr @@ -1,11 +1,11 @@ error: return type should be `!` - --> $DIR/panic-implementation-bad-signature-1.rs:22:6 + --> $DIR/panic-handler-bad-signature-1.rs:22:6 | LL | ) -> () //~ ERROR return type should be `!` | ^^ error: argument should be `&PanicInfo` - --> $DIR/panic-implementation-bad-signature-1.rs:21:11 + --> $DIR/panic-handler-bad-signature-1.rs:21:11 | LL | info: PanicInfo, //~ ERROR argument should be `&PanicInfo` | ^^^^^^^^^ diff --git a/src/test/ui/panic-implementation/panic-implementation-bad-signature-2.rs b/src/test/ui/panic-handler/panic-handler-bad-signature-2.rs index 2a628c05699..ec698903c84 100644 --- a/src/test/ui/panic-implementation/panic-implementation-bad-signature-2.rs +++ b/src/test/ui/panic-handler/panic-handler-bad-signature-2.rs @@ -10,13 +10,13 @@ // compile-flags:-C panic=abort -#![feature(panic_implementation)] +#![feature(panic_handler)] #![no_std] #![no_main] use core::panic::PanicInfo; -#[panic_implementation] +#[panic_handler] fn panic( info: &'static PanicInfo, //~ ERROR argument should be `&PanicInfo` ) -> ! diff --git a/src/test/ui/panic-implementation/panic-implementation-bad-signature-2.stderr b/src/test/ui/panic-handler/panic-handler-bad-signature-2.stderr index 71ed1efdcf2..4823f8a2781 100644 --- a/src/test/ui/panic-implementation/panic-implementation-bad-signature-2.stderr +++ b/src/test/ui/panic-handler/panic-handler-bad-signature-2.stderr @@ -1,5 +1,5 @@ error: argument should be `&PanicInfo` - --> $DIR/panic-implementation-bad-signature-2.rs:21:11 + --> $DIR/panic-handler-bad-signature-2.rs:21:11 | LL | info: &'static PanicInfo, //~ ERROR argument should be `&PanicInfo` | ^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/panic-implementation/panic-implementation-bad-signature-3.rs b/src/test/ui/panic-handler/panic-handler-bad-signature-3.rs index 29337025b70..585716c7c75 100644 --- a/src/test/ui/panic-implementation/panic-implementation-bad-signature-3.rs +++ b/src/test/ui/panic-handler/panic-handler-bad-signature-3.rs @@ -10,13 +10,13 @@ // compile-flags:-C panic=abort -#![feature(panic_implementation)] +#![feature(panic_handler)] #![no_std] #![no_main] use core::panic::PanicInfo; -#[panic_implementation] +#[panic_handler] fn panic() -> ! { //~ ERROR function should have one argument loop {} } diff --git a/src/test/ui/panic-implementation/panic-implementation-bad-signature-3.stderr b/src/test/ui/panic-handler/panic-handler-bad-signature-3.stderr index 3fd29bcd3e9..0eb0d4e1000 100644 --- a/src/test/ui/panic-implementation/panic-implementation-bad-signature-3.stderr +++ b/src/test/ui/panic-handler/panic-handler-bad-signature-3.stderr @@ -1,5 +1,5 @@ error: function should have one argument - --> $DIR/panic-implementation-bad-signature-3.rs:20:1 + --> $DIR/panic-handler-bad-signature-3.rs:20:1 | LL | / fn panic() -> ! { //~ ERROR function should have one argument LL | | loop {} diff --git a/src/test/ui/panic-handler/panic-handler-bad-signature-4.rs b/src/test/ui/panic-handler/panic-handler-bad-signature-4.rs new file mode 100644 index 00000000000..9cda37f27b3 --- /dev/null +++ b/src/test/ui/panic-handler/panic-handler-bad-signature-4.rs @@ -0,0 +1,23 @@ +// Copyright 2018 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. + +// compile-flags:-C panic=abort + +#![feature(panic_handler)] +#![no_std] +#![no_main] + +use core::panic::PanicInfo; + +#[panic_handler] +fn panic<T>(pi: &PanicInfo) -> ! { + //~^ ERROR should have no type parameters + loop {} +} diff --git a/src/test/ui/panic-handler/panic-handler-bad-signature-4.stderr b/src/test/ui/panic-handler/panic-handler-bad-signature-4.stderr new file mode 100644 index 00000000000..a61b9b3743c --- /dev/null +++ b/src/test/ui/panic-handler/panic-handler-bad-signature-4.stderr @@ -0,0 +1,11 @@ +error: should have no type parameters + --> $DIR/panic-handler-bad-signature-4.rs:20:1 + | +LL | / fn panic<T>(pi: &PanicInfo) -> ! { +LL | | //~^ ERROR should have no type parameters +LL | | loop {} +LL | | } + | |_^ + +error: aborting due to previous error + diff --git a/src/test/ui/panic-implementation/panic-implementation-duplicate.rs b/src/test/ui/panic-handler/panic-handler-duplicate.rs index 017113af409..7d7fe251869 100644 --- a/src/test/ui/panic-implementation/panic-implementation-duplicate.rs +++ b/src/test/ui/panic-handler/panic-handler-duplicate.rs @@ -11,13 +11,13 @@ // compile-flags:-C panic=abort #![feature(lang_items)] -#![feature(panic_implementation)] +#![feature(panic_handler)] #![no_std] #![no_main] use core::panic::PanicInfo; -#[panic_implementation] +#[panic_handler] fn panic(info: &PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/panic-implementation/panic-implementation-duplicate.stderr b/src/test/ui/panic-handler/panic-handler-duplicate.stderr index d553c02379c..d8afaa27e26 100644 --- a/src/test/ui/panic-implementation/panic-implementation-duplicate.stderr +++ b/src/test/ui/panic-handler/panic-handler-duplicate.stderr @@ -1,5 +1,5 @@ error[E0152]: duplicate lang item found: `panic_impl`. - --> $DIR/panic-implementation-duplicate.rs:26:1 + --> $DIR/panic-handler-duplicate.rs:26:1 | LL | / fn panic2(info: &PanicInfo) -> ! { //~ ERROR duplicate lang item found: `panic_impl`. LL | | loop {} @@ -7,7 +7,7 @@ LL | | } | |_^ | note: first defined here. - --> $DIR/panic-implementation-duplicate.rs:21:1 + --> $DIR/panic-handler-duplicate.rs:21:1 | LL | / fn panic(info: &PanicInfo) -> ! { LL | | loop {} diff --git a/src/test/ui/panic-implementation/panic-implementation-requires-panic-info.rs b/src/test/ui/panic-handler/panic-handler-requires-panic-info.rs index 597f44d9832..ec68a414f54 100644 --- a/src/test/ui/panic-implementation/panic-implementation-requires-panic-info.rs +++ b/src/test/ui/panic-handler/panic-handler-requires-panic-info.rs @@ -13,11 +13,11 @@ #![feature(lang_items)] #![feature(no_core)] -#![feature(panic_implementation)] +#![feature(panic_handler)] #![no_core] #![no_main] -#[panic_implementation] +#[panic_handler] fn panic() -> ! { loop {} } diff --git a/src/test/ui/panic-implementation/panic-implementation-requires-panic-info.stderr b/src/test/ui/panic-handler/panic-handler-requires-panic-info.stderr index 2bae12efbde..2bae12efbde 100644 --- a/src/test/ui/panic-implementation/panic-implementation-requires-panic-info.stderr +++ b/src/test/ui/panic-handler/panic-handler-requires-panic-info.stderr diff --git a/src/test/ui/panic-implementation/panic-implementation-std.rs b/src/test/ui/panic-handler/panic-handler-std.rs index f25cd3605c1..7cbe0a35bae 100644 --- a/src/test/ui/panic-implementation/panic-implementation-std.rs +++ b/src/test/ui/panic-handler/panic-handler-std.rs @@ -10,11 +10,11 @@ // error-pattern: duplicate lang item found: `panic_impl`. -#![feature(panic_implementation)] +#![feature(panic_handler)] use std::panic::PanicInfo; -#[panic_implementation] +#[panic_handler] fn panic(info: PanicInfo) -> ! { loop {} } diff --git a/src/test/ui/panic-implementation/panic-implementation-std.stderr b/src/test/ui/panic-handler/panic-handler-std.stderr index 5016d502cee..c34a993e2c5 100644 --- a/src/test/ui/panic-implementation/panic-implementation-std.stderr +++ b/src/test/ui/panic-handler/panic-handler-std.stderr @@ -1,5 +1,5 @@ error[E0152]: duplicate lang item found: `panic_impl`. - --> $DIR/panic-implementation-std.rs:18:1 + --> $DIR/panic-handler-std.rs:18:1 | LL | / fn panic(info: PanicInfo) -> ! { LL | | loop {} diff --git a/src/test/ui/panic-implementation/panic-implementation-bad-signature-4.stderr b/src/test/ui/panic-implementation/panic-implementation-bad-signature-4.stderr deleted file mode 100644 index 362be2fc3b9..00000000000 --- a/src/test/ui/panic-implementation/panic-implementation-bad-signature-4.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error: `#[panic_implementation]` function should have no type parameters - --> $DIR/panic-implementation-bad-signature-4.rs:20:1 - | -LL | / fn panic<T>(pi: &PanicInfo) -> ! { -LL | | //~^ ERROR `#[panic_implementation]` function should have no type parameters -LL | | loop {} -LL | | } - | |_^ - -error: aborting due to previous error - diff --git a/src/test/ui/panic-implementation/panic-implementation-bad-signature-4.rs b/src/test/ui/panic-implementation/panic-implementation-deprecated.rs index d5f942ba2d6..c4bec01f6af 100644 --- a/src/test/ui/panic-implementation/panic-implementation-bad-signature-4.rs +++ b/src/test/ui/panic-implementation/panic-implementation-deprecated.rs @@ -10,14 +10,15 @@ // compile-flags:-C panic=abort +#![deny(deprecated)] #![feature(panic_implementation)] #![no_std] -#![no_main] use core::panic::PanicInfo; #[panic_implementation] -fn panic<T>(pi: &PanicInfo) -> ! { - //~^ ERROR `#[panic_implementation]` function should have no type parameters +fn panic(info: &PanicInfo) -> ! { loop {} } + +fn main() {} diff --git a/src/test/ui/panic-implementation/panic-implementation-deprecated.stderr b/src/test/ui/panic-implementation/panic-implementation-deprecated.stderr new file mode 100644 index 00000000000..43f51447ac4 --- /dev/null +++ b/src/test/ui/panic-implementation/panic-implementation-deprecated.stderr @@ -0,0 +1,14 @@ +error: use of deprecated attribute `panic_implementation`: This attribute was renamed to `panic_handler`. See https://github.com/rust-lang/rust/issues/44489#issuecomment-415140224 + --> $DIR/panic-implementation-deprecated.rs:19:1 + | +LL | #[panic_implementation] + | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute + | +note: lint level defined here + --> $DIR/panic-implementation-deprecated.rs:13:9 + | +LL | #![deny(deprecated)] + | ^^^^^^^^^^ + +error: aborting due to previous error + diff --git a/src/test/ui/panic_implementation-closures.rs b/src/test/ui/panic_implementation-closures.rs index 4fa9a639928..6642db6ee76 100644 --- a/src/test/ui/panic_implementation-closures.rs +++ b/src/test/ui/panic_implementation-closures.rs @@ -12,9 +12,9 @@ #![crate_type = "rlib"] #![no_std] -#![feature(panic_implementation)] +#![feature(panic_handler)] -#[panic_implementation] +#[panic_handler] pub fn panic_fmt(_: &::core::panic::PanicInfo) -> ! { |x: u8| x; loop {} |
