diff options
author | John Hodge <tpg@mutabah.net> | 2016-03-12 11:16:15 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-03-12 11:16:15 +0800 |
commit | bc389f78562198ca5afd7c89c880da1212aa4720 (patch) | |
tree | 32987ef59ce3b80d0bff1c918a32bfb98376df3b | |
parent | 314edf07074ca2b211463ccf6b0e79ef051ffaa2 (diff) | |
download | mrust-bc389f78562198ca5afd7c89c880da1212aa4720.tar.gz |
AST - Remove some header code
-rw-r--r-- | src/ast/crate.cpp | 8 | ||||
-rw-r--r-- | src/ast/crate.hpp | 7 | ||||
-rw-r--r-- | src/expand/mod.cpp | 6 |
3 files changed, 13 insertions, 8 deletions
diff --git a/src/ast/crate.cpp b/src/ast/crate.cpp index e8ebb1eb..8bb416c5 100644 --- a/src/ast/crate.cpp +++ b/src/ast/crate.cpp @@ -336,6 +336,14 @@ void ExternCrate::prescan() } #endif +const MacroRules* ExternCrate::find_macro_rules(const ::std::string& name) +{ + auto i = m_mr_macros.find(name); + if(i != m_mr_macros.end()) + return &i->second; + return nullptr; +} + SERIALISE_TYPE(ExternCrate::, "AST_ExternCrate", { },{ }) diff --git a/src/ast/crate.hpp b/src/ast/crate.hpp index 769f78b8..cf9e2d10 100644 --- a/src/ast/crate.hpp +++ b/src/ast/crate.hpp @@ -84,12 +84,7 @@ public: ExternCrate(); ExternCrate(const char *path); - MacroRules& find_macro(const ::std::string& name) { - auto i = m_mr_macros.find(name); - if(i != m_mr_macros.end()) - return i->second; - throw ::std::runtime_error( FMT("TODO: Unable to find macro '" << name << "'") ); - } + const MacroRules* find_macro_rules(const ::std::string& name); //Crate& crate() { return m_crate; } //const Crate& crate() const { return m_crate; } diff --git a/src/expand/mod.cpp b/src/expand/mod.cpp index b7aa6518..4df507c5 100644 --- a/src/expand/mod.cpp +++ b/src/expand/mod.cpp @@ -237,13 +237,13 @@ struct CExpandExpr: void visit(::AST::ExprNode_If& node) override { this->visit_nodelete(node, node.m_cond); this->visit_nodelete(node, node.m_true); - this->visit_nodelete(node, node.m_false); // TODO: Can the false branch be `#[cfg]`d off? + this->visit_nodelete(node, node.m_false); } void visit(::AST::ExprNode_IfLet& node) override { // TODO: Pattern this->visit_nodelete(node, node.m_value); this->visit_nodelete(node, node.m_true); - this->visit_nodelete(node, node.m_false); // TODO: Can the false branch be `#[cfg]`d off? + this->visit_nodelete(node, node.m_false); } void visit(::AST::ExprNode_Integer& node) override { } void visit(::AST::ExprNode_Float& node) override { } @@ -403,6 +403,8 @@ void Expand(::AST::Crate& crate) // 1. Crate attributes Expand_Attrs(crate.m_attrs, AttrStage::EarlyPre, [&](const auto& d, const auto& a){ d.handle(a, crate); }); + // TODO: Load std/core + // 2. Module attributes for( auto& a : crate.m_attrs.m_items ) { |