diff options
author | John Hodge <tpg@mutabah.net> | 2016-09-26 15:38:26 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-09-26 15:38:26 +0800 |
commit | 5f68e80e8290f225db72221b1172bfb5cde8423e (patch) | |
tree | 6c89c150aef015e1feafef303eb95d51d6b3a491 /src | |
parent | 06a1470f8d9e3113bf905088c3d991f4317edf7b (diff) | |
download | mrust-5f68e80e8290f225db72221b1172bfb5cde8423e.tar.gz |
Parse - Improve debug for :item fragments
Diffstat (limited to 'src')
-rw-r--r-- | src/parse/interpolated_fragment.cpp | 15 | ||||
-rw-r--r-- | src/parse/token.cpp | 4 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/parse/interpolated_fragment.cpp b/src/parse/interpolated_fragment.cpp index f0d7c19c..29a7ab5a 100644 --- a/src/parse/interpolated_fragment.cpp +++ b/src/parse/interpolated_fragment.cpp @@ -96,21 +96,22 @@ InterpolatedFragment::InterpolatedFragment(TypeRef v): break; case InterpolatedFragment::EXPR: - os << "expr[" << *reinterpret_cast<AST::ExprNode*>(x.m_ptr) << "]"; + os << "expr[" << *reinterpret_cast<const AST::ExprNode*>(x.m_ptr) << "]"; break; case InterpolatedFragment::STMT: - os << "stmt[" << *reinterpret_cast<AST::ExprNode*>(x.m_ptr) << "]"; + os << "stmt[" << *reinterpret_cast<const AST::ExprNode*>(x.m_ptr) << "]"; break; case InterpolatedFragment::BLOCK: - os << "block[" << *reinterpret_cast<AST::ExprNode*>(x.m_ptr) << "]"; + os << "block[" << *reinterpret_cast<const AST::ExprNode*>(x.m_ptr) << "]"; break; case InterpolatedFragment::META: - os << "meta[" << *reinterpret_cast<AST::MetaItem*>(x.m_ptr) << "]"; - break; - case InterpolatedFragment::ITEM: - os << "item[?]"; + os << "meta[" << *reinterpret_cast<const AST::MetaItem*>(x.m_ptr) << "]"; break; + case InterpolatedFragment::ITEM: { + const auto& named_item = *reinterpret_cast<const AST::Named<AST::Item>*>(x.m_ptr); + os << "item[" << named_item.data.tag_str() << "(" << named_item.name << ")]"; + } break; } return os; } diff --git a/src/parse/token.cpp b/src/parse/token.cpp index 6899eecb..3c4d68ac 100644 --- a/src/parse/token.cpp +++ b/src/parse/token.cpp @@ -531,6 +531,10 @@ SERIALISE_TYPE(Token::, "Token", { case TOK_INTERPOLATED_META: os << ":" << *reinterpret_cast<AST::MetaItem*>(tok.m_data.as_Fragment()); break; + case TOK_INTERPOLATED_ITEM: { + const auto& named_item = *reinterpret_cast<const AST::Named<AST::Item>*>(tok.m_data.as_Fragment()); + os << ":" << named_item.data.tag_str() << "(" << named_item.name << ")"; + } break; default: break; } |