mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Use hoisting.
This commit is contained in:
parent
e681f4ee79
commit
79c415b104
@ -35,7 +35,6 @@ void NameCollector::operator()(VariableDeclaration const& _varDecl)
|
|||||||
void NameCollector::operator ()(FunctionDefinition const& _funDef)
|
void NameCollector::operator ()(FunctionDefinition const& _funDef)
|
||||||
{
|
{
|
||||||
m_names.insert(_funDef.name);
|
m_names.insert(_funDef.name);
|
||||||
m_functions[_funDef.name] = &_funDef;
|
|
||||||
for (auto const arg: _funDef.parameters)
|
for (auto const arg: _funDef.parameters)
|
||||||
m_names.insert(arg.name);
|
m_names.insert(arg.name);
|
||||||
for (auto const ret: _funDef.returnVariables)
|
for (auto const ret: _funDef.returnVariables)
|
||||||
|
@ -37,15 +37,18 @@ namespace julia
|
|||||||
class NameCollector: public ASTWalker
|
class NameCollector: public ASTWalker
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
explicit NameCollector(Block const& _block)
|
||||||
|
{
|
||||||
|
(*this)(_block);
|
||||||
|
}
|
||||||
|
|
||||||
using ASTWalker::operator ();
|
using ASTWalker::operator ();
|
||||||
virtual void operator()(VariableDeclaration const& _varDecl) override;
|
virtual void operator()(VariableDeclaration const& _varDecl) override;
|
||||||
virtual void operator()(FunctionDefinition const& _funDef) override;
|
virtual void operator()(FunctionDefinition const& _funDef) override;
|
||||||
|
|
||||||
std::set<std::string> const& names() const { return m_names; }
|
std::set<std::string> names() const { return m_names; }
|
||||||
std::map<std::string, FunctionDefinition const*> const& functions() const { return m_functions; }
|
|
||||||
private:
|
private:
|
||||||
std::set<std::string> m_names;
|
std::set<std::string> m_names;
|
||||||
std::map<std::string, FunctionDefinition const*> m_functions;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user