mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Use lambda to avoid code duplication in inheritableMembers
This commit is contained in:
parent
7db2b6fbdb
commit
efe8f9f8a0
25
AST.cpp
25
AST.cpp
@ -217,26 +217,23 @@ vector<ASTPointer<Declaration>> const& ContractDefinition::getInheritableMembers
|
|||||||
m_inheritableMembers.reset(new vector<ASTPointer<Declaration>>());
|
m_inheritableMembers.reset(new vector<ASTPointer<Declaration>>());
|
||||||
for (ContractDefinition const* contract: getLinearizedBaseContracts())
|
for (ContractDefinition const* contract: getLinearizedBaseContracts())
|
||||||
{
|
{
|
||||||
for (ASTPointer<FunctionDefinition> const& f: contract->getDefinedFunctions())
|
auto addInheritableMember = [&](ASTPointer<Declaration> const& _decl)
|
||||||
if (memberSeen.count(f->getName()) == 0 && f->isVisibleInDerivedContracts())
|
{
|
||||||
|
if (memberSeen.count(_decl->getName()) == 0 && _decl->isVisibleInDerivedContracts())
|
||||||
{
|
{
|
||||||
memberSeen.insert(f->getName());
|
memberSeen.insert(_decl->getName());
|
||||||
m_inheritableMembers->push_back(f);
|
m_inheritableMembers->push_back(_decl);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (ASTPointer<FunctionDefinition> const& f: contract->getDefinedFunctions())
|
||||||
|
addInheritableMember(f);
|
||||||
|
|
||||||
for (ASTPointer<VariableDeclaration> const& v: contract->getStateVariables())
|
for (ASTPointer<VariableDeclaration> const& v: contract->getStateVariables())
|
||||||
if (memberSeen.count(v->getName()) == 0 && v->isVisibleInDerivedContracts())
|
addInheritableMember(v);
|
||||||
{
|
|
||||||
memberSeen.insert(v->getName());
|
|
||||||
m_inheritableMembers->push_back(v);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (ASTPointer<StructDefinition> const& s: contract->getDefinedStructs())
|
for (ASTPointer<StructDefinition> const& s: contract->getDefinedStructs())
|
||||||
if (memberSeen.count(s->getName()) == 0 && s->isVisibleInDerivedContracts())
|
addInheritableMember(s);
|
||||||
{
|
|
||||||
memberSeen.insert(s->getName());
|
|
||||||
m_inheritableMembers->push_back(s);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return *m_inheritableMembers;
|
return *m_inheritableMembers;
|
||||||
|
Loading…
Reference in New Issue
Block a user