diff --git a/src/node/atoms.rs b/src/node/atoms.rs index 9b385e9..a70c445 100644 --- a/src/node/atoms.rs +++ b/src/node/atoms.rs @@ -43,7 +43,7 @@ pub(crate) mod tokens { // // /// Start part of doctype tag /// `` - #[derive(Clone, Debug, syn_derive::Parse, syn_derive::ToTokens)] + #[derive(Eq, PartialEq, Clone, Debug, syn_derive::Parse, syn_derive::ToTokens)] pub struct ComEnd { #[parse(parse::parse_array_of2_tokens)] #[to_tokens(parse::to_tokens_array)] @@ -72,7 +72,7 @@ pub(crate) mod tokens { /// End part of element's open tag /// `/>` or `>` - #[derive(Clone, Debug, syn_derive::Parse, syn_derive::ToTokens)] + #[derive(Eq, PartialEq, Clone, Debug, syn_derive::Parse, syn_derive::ToTokens)] pub struct OpenTagEnd { pub token_solidus: Option, pub token_gt: Token![>], @@ -81,7 +81,7 @@ pub(crate) mod tokens { /// Start part of element's close tag. /// Its commonly used as separator /// `` -#[derive(Clone, Debug, syn_derive::Parse, syn_derive::ToTokens)] +#[derive(Eq, PartialEq, Clone, Debug, syn_derive::Parse, syn_derive::ToTokens)] pub struct FragmentOpen { pub token_lt: Token![<], pub token_gt: Token![>], @@ -100,7 +100,7 @@ pub struct FragmentOpen { /// Fragment close part /// `` -#[derive(Clone, Debug, syn_derive::Parse, syn_derive::ToTokens)] +#[derive(Eq, PartialEq, Clone, Debug, syn_derive::Parse, syn_derive::ToTokens)] pub struct FragmentClose { pub start_tag: tokens::CloseTagStart, pub token_gt: Token![>], diff --git a/src/parser/recoverable.rs b/src/parser/recoverable.rs index e861df3..df1118c 100644 --- a/src/parser/recoverable.rs +++ b/src/parser/recoverable.rs @@ -38,7 +38,7 @@ //! [`Parser::parse_recoverable`]: struct.Parser.html#method.parse_recoverable //! [`Node`]: struct.Node.html -use std::{collections::HashSet, fmt::Debug, rc::Rc}; +use std::{backtrace, collections::HashSet, fmt::Debug, rc::Rc}; use proc_macro2_diagnostics::{Diagnostic, Level}; use syn::parse::{Parse, ParseStream}; @@ -141,6 +141,7 @@ impl RecoverableContext { /// and convert result to `Option`, that can be used directly /// as output in [`ParseRecoverable::parse_recoverable`] pub fn save_diagnostics(&mut self, val: syn::Result) -> Option { + println!("{}", std::backtrace::Backtrace::capture().to_string()); match val { Ok(v) => Some(v), Err(e) => { @@ -153,7 +154,10 @@ impl RecoverableContext { /// Push custom message of [`syn::Error`] or /// [`proc_macro2_diagnostics::Diagnostic`] pub fn push_diagnostic(&mut self, diagnostic: impl Into) { - self.diagnostics.push(diagnostic.into()); + let diag = diagnostic.into(); + + println!("{}", std::backtrace::Backtrace::capture().to_string()); + self.diagnostics.push(dbg!(diag)); } }