diff options
| author | Alex Burka <alex@alexburka.com> | 2017-10-27 04:50:54 +0000 |
|---|---|---|
| committer | Alex Burka <alex@alexburka.com> | 2017-11-19 22:22:22 +0000 |
| commit | bcd1fedf034b8735605b390f3a4d75b65162b514 (patch) | |
| tree | 52adbeb88fd6168e6ca451c34ebc79885b25a206 /src | |
| parent | c73bcf043e94b32e2d53ecfd3e53a0535b320456 (diff) | |
| download | rust-bcd1fedf034b8735605b390f3a4d75b65162b514.tar.gz rust-bcd1fedf034b8735605b390f3a4d75b65162b514.zip | |
add UI test
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_errors/emitter.rs | 9 | ||||
| -rw-r--r-- | src/test/ui/macro_backtrace/auxiliary/ping.rs | 20 | ||||
| -rw-r--r-- | src/test/ui/macro_backtrace/main.rs | 25 | ||||
| -rw-r--r-- | src/test/ui/macro_backtrace/main.stderr | 21 |
4 files changed, 72 insertions, 3 deletions
diff --git a/src/librustc_errors/emitter.rs b/src/librustc_errors/emitter.rs index 7ce902d0a6f..41672d89486 100644 --- a/src/librustc_errors/emitter.rs +++ b/src/librustc_errors/emitter.rs @@ -795,8 +795,11 @@ impl EmitterWriter { if spans_updated { children.push(SubDiagnostic { level: Level::Note, - message: vec![("this error originates in a macro outside of the current crate (run with RUST_MACRO_BACKTRACE=1 for more info)" - .to_string(), Style::NoStyle)], + message: vec![ + (["this error originates in a macro outside of the current crate", + "(run with RUST_MACRO_BACKTRACE=1 for more info)"].join(" "), + Style::NoStyle), + ], span: MultiSpan::new(), render_span: None, }); @@ -1242,7 +1245,7 @@ impl EmitterWriter { if let Some(ref cm) = self.cm { for trace in sp.macro_backtrace().iter().rev() { let line_offset = buffer.num_lines(); - + let mut diag_string = format!("in this expansion of {}", trace.macro_decl_name); if let Some(def_site_span) = trace.def_site_span { diff --git a/src/test/ui/macro_backtrace/auxiliary/ping.rs b/src/test/ui/macro_backtrace/auxiliary/ping.rs new file mode 100644 index 00000000000..eeed0d78158 --- /dev/null +++ b/src/test/ui/macro_backtrace/auxiliary/ping.rs @@ -0,0 +1,20 @@ +// Copyright 2017 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. + +// Test that the macro backtrace facility works (supporting file) + +// a non-local macro +#[macro_export] +macro_rules! ping { + () => { + pong!(); + } +} + diff --git a/src/test/ui/macro_backtrace/main.rs b/src/test/ui/macro_backtrace/main.rs new file mode 100644 index 00000000000..4da0c586d60 --- /dev/null +++ b/src/test/ui/macro_backtrace/main.rs @@ -0,0 +1,25 @@ +// Copyright 2017 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. + +// Test that the macro backtrace facility works +// aux-build:ping.rs +// rustc-env:RUST_MACRO_BACKTRACE + +#[macro_use] extern crate ping; + +// a local macro +macro_rules! pong { + () => { syntax error }; +} + +fn main() { + pong!(); + ping!(); +} diff --git a/src/test/ui/macro_backtrace/main.stderr b/src/test/ui/macro_backtrace/main.stderr new file mode 100644 index 00000000000..37f3d450215 --- /dev/null +++ b/src/test/ui/macro_backtrace/main.stderr @@ -0,0 +1,21 @@ +error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `error` + --> $DIR/main.rs:19:20 + | +19 | () => { syntax error }; + | -^^^^^ unexpected token + | | + | expected one of 8 possible tokens here +$DIR/main.rs:23:5: 23:13 note: in this expansion of pong! (defined in $DIR/main.rs) + +error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `error` + --> $DIR/main.rs:19:20 + | +19 | () => { syntax error }; + | -^^^^^ unexpected token + | | + | expected one of 8 possible tokens here +$DIR/main.rs:24:5: 24:13 note: in this expansion of ping! (defined in <ping macros>) +<ping macros>:1:11: 1:24 note: in this expansion of pong! (defined in $DIR/main.rs) + +error: aborting due to 2 previous errors + |
