summaryrefslogtreecommitdiff
path: root/src/macro_rules/mod.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-09-25 18:00:47 +0800
committerJohn Hodge <tpg@mutabah.net>2016-09-25 18:00:47 +0800
commit07849e03b7d32ff28402ddd485326e00dbe2fedd (patch)
tree000e521dfebd5c860d8bd2ed1d4cde78415847f7 /src/macro_rules/mod.cpp
parenta2fc0567c434af1d5888db4f5c82df7f1e6b970f (diff)
downloadmrust-07849e03b7d32ff28402ddd485326e00dbe2fedd.tar.gz
macro_rules! - Rough (stubbed) support for :item
Diffstat (limited to 'src/macro_rules/mod.cpp')
-rw-r--r--src/macro_rules/mod.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/macro_rules/mod.cpp b/src/macro_rules/mod.cpp
index a1b4ed0e..4f7dad45 100644
--- a/src/macro_rules/mod.cpp
+++ b/src/macro_rules/mod.cpp
@@ -108,6 +108,27 @@ bool is_token_stmt(eTokenType tt) {
}
}
+bool is_token_item(eTokenType tt) {
+ switch( tt )
+ {
+ case TOK_RWORD_PUB:
+ case TOK_RWORD_UNSAFE:
+ case TOK_RWORD_TYPE:
+ case TOK_RWORD_CONST:
+ case TOK_RWORD_STATIC:
+ case TOK_RWORD_FN:
+ case TOK_RWORD_STRUCT:
+ case TOK_RWORD_ENUM:
+ case TOK_RWORD_TRAIT:
+ case TOK_RWORD_MOD:
+ //case TOK_RWORD_IMPL:
+ // TODO: more?
+ return true;
+ default:
+ return false;
+ }
+}
+
MacroRulesPtr::~MacroRulesPtr()
{
if(m_ptr)
@@ -133,6 +154,7 @@ void operator%(Serialiser& s, MacroPatEnt::Type c) {
_(PAT_PATH);
_(PAT_BLOCK);
_(PAT_META);
+ _(PAT_ITEM);
_(PAT_IDENT);
#undef _
}
@@ -154,6 +176,7 @@ void operator%(::Deserialiser& s, MacroPatEnt::Type& c) {
_(PAT_BLOCK);
_(PAT_META);
_(PAT_IDENT);
+ _(PAT_ITEM);
else
throw ::std::runtime_error( FMT("No conversion for '" << n << "'") );
#undef _
@@ -185,6 +208,7 @@ SERIALISE_TYPE_S(MacroPatEnt, {
case MacroPatEnt::PAT_STMT: os << "stmt"; break;
case MacroPatEnt::PAT_BLOCK: os << "block"; break;
case MacroPatEnt::PAT_META: os << "meta"; break;
+ case MacroPatEnt::PAT_ITEM: os << "item"; break;
}
break;
}
@@ -205,6 +229,7 @@ SERIALISE_TYPE_S(MacroPatEnt, {
case MacroPatEnt::PAT_STMT: os << "PAT_STMT"; break;
case MacroPatEnt::PAT_BLOCK: os << "PAT_BLOCK"; break;
case MacroPatEnt::PAT_META: os << "PAT_META"; break;
+ case MacroPatEnt::PAT_ITEM: os << "PAT_ITEM"; break;
}
return os;
}