mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-04 19:12:50 +00:00
Don't print the macro definition site in backtraces
This halves the backtrace length. The definition site wasn't very useful anyways, since it may be invalid (for compiler expansions) or located in another crate. Since the macro name is still printed, grepping for it is still an easy way of finding the definition.
This commit is contained in:
parent
49d8b0dcbe
commit
31fa44b18e
@ -732,21 +732,17 @@ impl EmitterWriter {
|
||||
sp_opt = try!(cm.with_expn_info(sp.expn_id, |expn_info| -> io::Result<_> {
|
||||
match expn_info {
|
||||
Some(ei) => {
|
||||
let ss = ei.callee.span.map_or(String::new(),
|
||||
|span| cm.span_to_string(span));
|
||||
let (pre, post) = match ei.callee.format {
|
||||
codemap::MacroAttribute(..) => ("#[", "]"),
|
||||
codemap::MacroBang(..) => ("", "!"),
|
||||
codemap::CompilerExpansion(..) => ("", ""),
|
||||
};
|
||||
try!(self.print_diagnostic(&ss, Note,
|
||||
&format!("in expansion of {}{}{}",
|
||||
try!(self.print_diagnostic(&cm.span_to_string(ei.call_site), Note,
|
||||
&format!("in this expansion of {}{}{}",
|
||||
pre,
|
||||
ei.callee.name(),
|
||||
post),
|
||||
None));
|
||||
let ss = cm.span_to_string(ei.call_site);
|
||||
try!(self.print_diagnostic(&ss, Note, "expansion site", None));
|
||||
Ok(Some(ei.call_site))
|
||||
}
|
||||
None => Ok(None)
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
// Test that we get an expansion stack for `for` loops.
|
||||
|
||||
// error-pattern:in expansion of for loop expansion
|
||||
// error-pattern:in this expansion of for loop expansion
|
||||
|
||||
fn main() {
|
||||
for t in &foo {
|
||||
|
@ -10,25 +10,25 @@
|
||||
|
||||
// Macros in statement vs expression position handle backtraces differently.
|
||||
|
||||
macro_rules! fake_method_stmt { //~ NOTE in expansion of
|
||||
macro_rules! fake_method_stmt {
|
||||
() => {
|
||||
1.fake() //~ ERROR no method named `fake` found
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! fake_field_stmt { //~ NOTE in expansion of
|
||||
macro_rules! fake_field_stmt {
|
||||
() => {
|
||||
1.fake //~ ERROR no field with that name
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! fake_anon_field_stmt { //~ NOTE in expansion of
|
||||
macro_rules! fake_anon_field_stmt {
|
||||
() => {
|
||||
(1).0 //~ ERROR type was not a tuple
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! fake_method_expr { //~ NOTE in expansion of
|
||||
macro_rules! fake_method_expr {
|
||||
() => {
|
||||
1.fake() //~ ERROR no method named `fake` found
|
||||
}
|
||||
@ -47,11 +47,13 @@ macro_rules! fake_anon_field_expr {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
fake_method_stmt!(); //~ NOTE expansion site
|
||||
fake_field_stmt!(); //~ NOTE expansion site
|
||||
fake_anon_field_stmt!(); //~ NOTE expansion site
|
||||
fake_method_stmt!(); //~ NOTE in this expansion of
|
||||
fake_field_stmt!(); //~ NOTE in this expansion of
|
||||
fake_anon_field_stmt!(); //~ NOTE in this expansion of
|
||||
|
||||
let _ = fake_method_expr!(); //~ NOTE expansion site
|
||||
let _ = fake_method_expr!(); //~ NOTE in this expansion of
|
||||
let _ = fake_field_expr!(); //~ ERROR no field with that name
|
||||
//~^ NOTE in this expansion of
|
||||
let _ = fake_anon_field_expr!(); //~ ERROR type was not a tuple
|
||||
//~^ NOTE in this expansion of
|
||||
}
|
||||
|
@ -19,11 +19,11 @@ macro_rules! call_nested_expr {
|
||||
() => (nested_expr!())
|
||||
}
|
||||
|
||||
macro_rules! call_nested_expr_sum { //~ NOTE in expansion of
|
||||
macro_rules! call_nested_expr_sum {
|
||||
() => { 1 + nested_expr!(); } //~ ERROR unresolved name
|
||||
}
|
||||
|
||||
fn main() {
|
||||
1 + call_nested_expr!(); //~ ERROR unresolved name
|
||||
call_nested_expr_sum!(); //~ NOTE expansion site
|
||||
call_nested_expr_sum!(); //~ NOTE in this expansion of
|
||||
}
|
||||
|
@ -16,14 +16,15 @@
|
||||
|
||||
fn print(_args: std::fmt::Arguments) {}
|
||||
|
||||
macro_rules! myprint { //~ NOTE in expansion of
|
||||
($($arg:tt)*) => (print(format_args!($($arg)*)));
|
||||
macro_rules! myprint {
|
||||
($($arg:tt)*) => (print(format_args!($($arg)*))); //~ NOTE in this expansion of
|
||||
}
|
||||
|
||||
macro_rules! myprintln { //~ NOTE in expansion of
|
||||
macro_rules! myprintln {
|
||||
($fmt:expr) => (myprint!(concat!($fmt, "\n"))); //~ ERROR invalid reference to argument `0`
|
||||
//~^ NOTE in this expansion of
|
||||
}
|
||||
|
||||
fn main() {
|
||||
myprintln!("{}"); //~ NOTE expansion site
|
||||
myprintln!("{}"); //~ NOTE in this expansion of
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// forbid-output: in expansion of
|
||||
// forbid-output: in this expansion of
|
||||
|
||||
macro_rules! make_method {
|
||||
($name:ident) => ( fn $name(&self) { } )
|
||||
|
Loading…
Reference in New Issue
Block a user