summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-03-12 11:16:15 +0800
committerJohn Hodge <tpg@mutabah.net>2016-03-12 11:16:15 +0800
commitbc389f78562198ca5afd7c89c880da1212aa4720 (patch)
tree32987ef59ce3b80d0bff1c918a32bfb98376df3b
parent314edf07074ca2b211463ccf6b0e79ef051ffaa2 (diff)
downloadmrust-bc389f78562198ca5afd7c89c880da1212aa4720.tar.gz
AST - Remove some header code
-rw-r--r--src/ast/crate.cpp8
-rw-r--r--src/ast/crate.hpp7
-rw-r--r--src/expand/mod.cpp6
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 )
{