summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-09-26 15:38:26 +0800
committerJohn Hodge <tpg@mutabah.net>2016-09-26 15:38:26 +0800
commit5f68e80e8290f225db72221b1172bfb5cde8423e (patch)
tree6c89c150aef015e1feafef303eb95d51d6b3a491 /src
parent06a1470f8d9e3113bf905088c3d991f4317edf7b (diff)
downloadmrust-5f68e80e8290f225db72221b1172bfb5cde8423e.tar.gz
Parse - Improve debug for :item fragments
Diffstat (limited to 'src')
-rw-r--r--src/parse/interpolated_fragment.cpp15
-rw-r--r--src/parse/token.cpp4
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;
}