Use hoisting.

This commit is contained in:
chriseth 2017-12-07 15:43:09 +01:00
parent e681f4ee79
commit 79c415b104
2 changed files with 6 additions and 4 deletions

View File

@ -35,7 +35,6 @@ void NameCollector::operator()(VariableDeclaration const& _varDecl)
void NameCollector::operator ()(FunctionDefinition const& _funDef)
{
m_names.insert(_funDef.name);
m_functions[_funDef.name] = &_funDef;
for (auto const arg: _funDef.parameters)
m_names.insert(arg.name);
for (auto const ret: _funDef.returnVariables)

View File

@ -37,15 +37,18 @@ namespace julia
class NameCollector: public ASTWalker
{
public:
explicit NameCollector(Block const& _block)
{
(*this)(_block);
}
using ASTWalker::operator ();
virtual void operator()(VariableDeclaration const& _varDecl) override;
virtual void operator()(FunctionDefinition const& _funDef) override;
std::set<std::string> const& names() const { return m_names; }
std::map<std::string, FunctionDefinition const*> const& functions() const { return m_functions; }
std::set<std::string> names() const { return m_names; }
private:
std::set<std::string> m_names;
std::map<std::string, FunctionDefinition const*> m_functions;
};
/**