mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-04 19:29:07 +00:00
add UI test
This commit is contained in:
parent
c73bcf043e
commit
bcd1fedf03
@ -795,8 +795,11 @@ impl EmitterWriter {
|
|||||||
if spans_updated {
|
if spans_updated {
|
||||||
children.push(SubDiagnostic {
|
children.push(SubDiagnostic {
|
||||||
level: Level::Note,
|
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)"
|
message: vec![
|
||||||
.to_string(), Style::NoStyle)],
|
(["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(),
|
span: MultiSpan::new(),
|
||||||
render_span: None,
|
render_span: None,
|
||||||
});
|
});
|
||||||
@ -1242,7 +1245,7 @@ impl EmitterWriter {
|
|||||||
if let Some(ref cm) = self.cm {
|
if let Some(ref cm) = self.cm {
|
||||||
for trace in sp.macro_backtrace().iter().rev() {
|
for trace in sp.macro_backtrace().iter().rev() {
|
||||||
let line_offset = buffer.num_lines();
|
let line_offset = buffer.num_lines();
|
||||||
|
|
||||||
let mut diag_string =
|
let mut diag_string =
|
||||||
format!("in this expansion of {}", trace.macro_decl_name);
|
format!("in this expansion of {}", trace.macro_decl_name);
|
||||||
if let Some(def_site_span) = trace.def_site_span {
|
if let Some(def_site_span) = trace.def_site_span {
|
||||||
|
20
src/test/ui/macro_backtrace/auxiliary/ping.rs
Normal file
20
src/test/ui/macro_backtrace/auxiliary/ping.rs
Normal 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!();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
25
src/test/ui/macro_backtrace/main.rs
Normal file
25
src/test/ui/macro_backtrace/main.rs
Normal 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!();
|
||||||
|
}
|
21
src/test/ui/macro_backtrace/main.stderr
Normal file
21
src/test/ui/macro_backtrace/main.stderr
Normal 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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user