summaryrefslogtreecommitdiff
path: root/src/parse/interpolated_fragment.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2018-12-28 08:37:09 +0800
committerJohn Hodge <tpg@mutabah.net>2018-12-28 08:37:09 +0800
commit38575976d5835cb8cc9e7ae335969873d01e7d65 (patch)
tree769a861d29ee3470a42fb7cb829944c9255e031d /src/parse/interpolated_fragment.cpp
parenta0bdedaaed4393236877c45bb56692fe05732a56 (diff)
downloadmrust-38575976d5835cb8cc9e7ae335969873d01e7d65.tar.gz
macro_rules - Support for the :vis fragment
Diffstat (limited to 'src/parse/interpolated_fragment.cpp')
-rw-r--r--src/parse/interpolated_fragment.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/parse/interpolated_fragment.cpp b/src/parse/interpolated_fragment.cpp
index d8a8bc43..634309a5 100644
--- a/src/parse/interpolated_fragment.cpp
+++ b/src/parse/interpolated_fragment.cpp
@@ -31,6 +31,9 @@ InterpolatedFragment::~InterpolatedFragment()
case InterpolatedFragment::ITEM:
delete reinterpret_cast<AST::Named<AST::Item>*>(m_ptr);
break;
+ case InterpolatedFragment::VIS:
+ delete reinterpret_cast<AST::Visibility*>(m_ptr);
+ break;
}
}
}
@@ -82,6 +85,11 @@ InterpolatedFragment::InterpolatedFragment(TypeRef v):
m_ptr( new TypeRef(mv$(v)) )
{
}
+InterpolatedFragment::InterpolatedFragment(AST::Visibility v):
+ m_type( InterpolatedFragment::VIS ),
+ m_ptr( new AST::Visibility(mv$(v)) )
+{
+}
::std::ostream& operator<<(::std::ostream& os, InterpolatedFragment const& x)
{
@@ -117,6 +125,9 @@ InterpolatedFragment::InterpolatedFragment(TypeRef v):
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;
+ case InterpolatedFragment::VIS:
+ os << "vis[" << *reinterpret_cast<const AST::Visibility*>(x.m_ptr) << "]";
+ break;
}
return os;
}