summaryrefslogtreecommitdiff
path: root/src/ast
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-03-06 22:07:41 +0800
committerJohn Hodge <tpg@mutabah.net>2016-03-06 22:07:41 +0800
commit150a481100bba025bc5132338ae3d37f19de5bfc (patch)
treeff93347bccdd826ae1bc0ce1aeb4710c8210e852 /src/ast
parent1573cf55ff6f38f51716bfe92b70341fa5489c74 (diff)
downloadmrust-150a481100bba025bc5132338ae3d37f19de5bfc.tar.gz
Move macro_rules parsing and expansion to expand/synexts
Diffstat (limited to 'src/ast')
-rw-r--r--src/ast/ast.cpp2
-rw-r--r--src/ast/ast.hpp3
-rw-r--r--src/ast/macro.hpp12
3 files changed, 16 insertions, 1 deletions
diff --git a/src/ast/ast.cpp b/src/ast/ast.cpp
index 33741397..a413c64e 100644
--- a/src/ast/ast.cpp
+++ b/src/ast/ast.cpp
@@ -345,7 +345,7 @@ template<typename T>
typename ::std::vector<Named<T> >::const_iterator find_named(const ::std::vector<Named<T> >& vec, const ::std::string& name)
{
return ::std::find_if(vec.begin(), vec.end(), [&name](const Named<T>& x) {
- DEBUG("find_named - x.name = " << x.name);
+ //DEBUG("find_named - x.name = " << x.name);
return x.name == name;
});
}
diff --git a/src/ast/ast.hpp b/src/ast/ast.hpp
index 9eba0307..ea518eab 100644
--- a/src/ast/ast.hpp
+++ b/src/ast/ast.hpp
@@ -435,6 +435,8 @@ public:
void add_macro_invocation(MacroInvocation item) {
m_macro_invocations.push_back( mv$(item) );
}
+
+
unsigned int add_anon_module(Module* mod_ptr) {
auto it = ::std::find(m_anon_modules.begin(), m_anon_modules.end(), mod_ptr);
@@ -505,6 +507,7 @@ public:
const ::std::vector<Module*>& anon_mods() const { return m_anon_modules; }
+ ::std::vector<MacroInvocation>& macro_invs() { return m_macro_invocations; }
const NamedList<MacroRules>& macros() const { return m_macros; }
const ::std::vector<NamedNS<const MacroRules*> > macro_imports_res() const { return m_macro_import_res; }
diff --git a/src/ast/macro.hpp b/src/ast/macro.hpp
index d80db7bf..4696c732 100644
--- a/src/ast/macro.hpp
+++ b/src/ast/macro.hpp
@@ -33,6 +33,18 @@ public:
return ::std::unique_ptr<MacroInvocation>(i);
}
+ void clear() {
+ m_macro_name = "";
+ m_ident = "";
+ m_input = TokenTree();
+ }
+
+ const ::std::string& name() const { return m_macro_name; }
+
+ const ::std::string& input_ident() const { return m_ident; }
+ const TokenTree& input_tt() const { return m_input; }
+
+
SERIALISABLE_PROTOTYPES();
friend ::std::ostream& operator<<(::std::ostream& os, const MacroInvocation& x) {