aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fallback.rs6
-rw-r--r--src/lib.rs6
-rw-r--r--src/wrapper.rs9
3 files changed, 17 insertions, 4 deletions
diff --git a/src/fallback.rs b/src/fallback.rs
index baeed69..7f3cc4e 100644
--- a/src/fallback.rs
+++ b/src/fallback.rs
@@ -414,6 +414,12 @@ impl fmt::Debug for Span {
}
}
+pub fn debug_span_field_if_nontrivial(debug: &mut fmt::DebugStruct, span: Span) {
+ if cfg!(procmacro2_semver_exempt) {
+ debug.field("span", &span);
+ }
+}
+
#[derive(Clone)]
pub struct Group {
delimiter: Delimiter,
diff --git a/src/lib.rs b/src/lib.rs
index 60ab060..fd49f01 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -495,8 +495,7 @@ impl fmt::Debug for TokenTree {
TokenTree::Ident(ref t) => {
let mut debug = f.debug_struct("Ident");
debug.field("sym", &format_args!("{}", t));
- #[cfg(any(feature = "nightly", procmacro2_semver_exempt))]
- debug.field("span", &t.span());
+ imp::debug_span_field_if_nontrivial(&mut debug, t.span().inner);
debug.finish()
}
TokenTree::Punct(ref t) => t.fmt(f),
@@ -705,8 +704,7 @@ impl fmt::Debug for Punct {
let mut debug = fmt.debug_struct("Punct");
debug.field("op", &self.op);
debug.field("spacing", &self.spacing);
- #[cfg(procmacro2_semver_exempt)]
- debug.field("span", &self.span);
+ imp::debug_span_field_if_nontrivial(&mut debug, self.span.inner);
debug.finish()
}
}
diff --git a/src/wrapper.rs b/src/wrapper.rs
index b43c5de..8ead052 100644
--- a/src/wrapper.rs
+++ b/src/wrapper.rs
@@ -551,6 +551,15 @@ impl fmt::Debug for Span {
}
}
+pub fn debug_span_field_if_nontrivial(debug: &mut fmt::DebugStruct, span: Span) {
+ match span {
+ Span::Compiler(s) => {
+ debug.field("span", &s);
+ }
+ Span::Fallback(s) => fallback::debug_span_field_if_nontrivial(debug, s),
+ }
+}
+
#[derive(Clone)]
pub enum Group {
Compiler(proc_macro::Group),