mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-22 02:00:00 +03:00
b541d3da5d
Currently, the `Debug` impl for `proc_macro::Span` just prints out the byte range. This can make debugging proc macros (either as a crate author or as a compiler developer) very frustrating, since neither the actual filename nor the `SyntaxContext` is displayed. This commit adds a perma-unstable flag `-Z span-debug`. When enabled, the `Debug` impl for `proc_macro::Span` simply forwards directly to `rustc_span::Span`. Once #72618 is merged, this will start displaying actual line numbers. While `Debug` impls are not subject to Rust's normal stability guarnatees, we probably shouldn't expose any additional information on stable until `#![feature(proc_macro_span)]` is stabilized. Otherwise, we would be providing a 'backdoor' way to access information that's supposed be behind unstable APIs.
42 lines
587 B
Rust
42 lines
587 B
Rust
// run-pass
|
|
// aux-build:macro-dump-debug.rs
|
|
// compile-flags: -Z span-debug
|
|
|
|
extern crate macro_dump_debug;
|
|
use macro_dump_debug::dump_debug;
|
|
|
|
dump_debug! {
|
|
ident // ident
|
|
r#ident // raw ident
|
|
, // alone punct
|
|
==> // joint punct
|
|
() // empty group
|
|
[_] // nonempty group
|
|
|
|
// unsuffixed literals
|
|
0
|
|
1.0
|
|
"S"
|
|
b"B"
|
|
r"R"
|
|
r##"R"##
|
|
br"BR"
|
|
br##"BR"##
|
|
'C'
|
|
b'B'
|
|
|
|
// suffixed literals
|
|
0q
|
|
1.0q
|
|
"S"q
|
|
b"B"q
|
|
r"R"q
|
|
r##"R"##q
|
|
br"BR"q
|
|
br##"BR"##q
|
|
'C'q
|
|
b'B'q
|
|
}
|
|
|
|
fn main() {}
|