add UI test

This commit is contained in:
Alex Burka 2017-10-27 04:50:54 +00:00
parent c73bcf043e
commit bcd1fedf03
4 changed files with 72 additions and 3 deletions

View file

@ -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 {

View file

@ -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!();
}
}

View file

@ -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!();
}

View file

@ -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