rust/src/test/compile-fail/macro-backtrace-println.rs
Jonas Schievink 31fa44b18e 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.
2015-09-10 22:25:28 +02:00

31 lines
1.1 KiB
Rust

// Copyright 2015 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.
// The `format_args!` syntax extension issues errors before code expansion
// has completed, but we still need a backtrace.
// This test includes stripped-down versions of `print!` and `println!`,
// because we can't otherwise verify the lines of the backtrace.
fn print(_args: std::fmt::Arguments) {}
macro_rules! myprint {
($($arg:tt)*) => (print(format_args!($($arg)*))); //~ NOTE in this 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 in this expansion of
}