Skip to content

Commit

Permalink
add UI test
Browse files Browse the repository at this point in the history
  • Loading branch information
durka committed Nov 19, 2017
1 parent c73bcf0 commit bcd1fed
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 3 deletions.
9 changes: 6 additions & 3 deletions src/librustc_errors/emitter.rs
Expand Up @@ -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,
});
Expand Down Expand Up @@ -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 {
Expand Down
20 changes: 20 additions & 0 deletions 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!();
}
}

25 changes: 25 additions & 0 deletions 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!();
}
21 changes: 21 additions & 0 deletions 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

0 comments on commit bcd1fed

Please sign in to comment.