diff options
| author | Jorge Aparicio <jorge@japaric.io> | 2018-06-29 16:00:34 -0500 |
|---|---|---|
| committer | Jorge Aparicio <jorge@japaric.io> | 2018-06-29 16:00:34 -0500 |
| commit | faaf250a912dd6e203b232ed4b4137eebc8b5c78 (patch) | |
| tree | d02480c00227118c2d9f9f24f8e4cfee6ee3686d | |
| parent | 5fdcd3aa389aa92879f576c55e429015667143c3 (diff) | |
| download | rust-faaf250a912dd6e203b232ed4b4137eebc8b5c78.tar.gz rust-faaf250a912dd6e203b232ed4b4137eebc8b5c78.zip | |
improve the error message when `#[panic_implementation]` is missing
closes #51341
| -rw-r--r-- | src/librustc/middle/weak_lang_items.rs | 10 | ||||
| -rw-r--r-- | src/test/compile-fail/panic-implementation-missing.rs | 18 |
2 files changed, 25 insertions, 3 deletions
diff --git a/src/librustc/middle/weak_lang_items.rs b/src/librustc/middle/weak_lang_items.rs index 1d147eef054..180e75df1a6 100644 --- a/src/librustc/middle/weak_lang_items.rs +++ b/src/librustc/middle/weak_lang_items.rs @@ -112,9 +112,13 @@ fn verify<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, if missing.contains(&lang_items::$item) && !whitelisted(tcx, lang_items::$item) && items.$name().is_none() { - tcx.sess.err(&format!("language item required, but not found: `{}`", - stringify!($name))); - + if lang_items::$item == lang_items::PanicImplLangItem { + tcx.sess.err(&format!("`#[panic_implementation]` function required, \ + but not found")); + } else { + tcx.sess.err(&format!("language item required, but not found: `{}`", + stringify!($name))); + } } )* } diff --git a/src/test/compile-fail/panic-implementation-missing.rs b/src/test/compile-fail/panic-implementation-missing.rs new file mode 100644 index 00000000000..b11081a3e3b --- /dev/null +++ b/src/test/compile-fail/panic-implementation-missing.rs @@ -0,0 +1,18 @@ +// 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. + +// error-pattern: `#[panic_implementation]` function required, but not found + +#![feature(lang_items)] +#![no_main] +#![no_std] + +#[lang = "eh_personality"] +fn eh() {} |
