diff options
-rw-r--r-- | src/fallback.rs | 6 | ||||
-rw-r--r-- | src/lib.rs | 6 | ||||
-rw-r--r-- | src/wrapper.rs | 9 |
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, @@ -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), |