mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
getInheritableMembers() does not look at BaseContracts
- Also adding tests for improper accessing members of other contracts.
This commit is contained in:
parent
efe8f9f8a0
commit
bbaa9fef6c
9
AST.cpp
9
AST.cpp
@ -215,8 +215,6 @@ vector<ASTPointer<Declaration>> const& ContractDefinition::getInheritableMembers
|
|||||||
{
|
{
|
||||||
set<string> memberSeen;
|
set<string> memberSeen;
|
||||||
m_inheritableMembers.reset(new vector<ASTPointer<Declaration>>());
|
m_inheritableMembers.reset(new vector<ASTPointer<Declaration>>());
|
||||||
for (ContractDefinition const* contract: getLinearizedBaseContracts())
|
|
||||||
{
|
|
||||||
auto addInheritableMember = [&](ASTPointer<Declaration> const& _decl)
|
auto addInheritableMember = [&](ASTPointer<Declaration> const& _decl)
|
||||||
{
|
{
|
||||||
if (memberSeen.count(_decl->getName()) == 0 && _decl->isVisibleInDerivedContracts())
|
if (memberSeen.count(_decl->getName()) == 0 && _decl->isVisibleInDerivedContracts())
|
||||||
@ -226,16 +224,15 @@ vector<ASTPointer<Declaration>> const& ContractDefinition::getInheritableMembers
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
for (ASTPointer<FunctionDefinition> const& f: contract->getDefinedFunctions())
|
for (ASTPointer<FunctionDefinition> const& f: getDefinedFunctions())
|
||||||
addInheritableMember(f);
|
addInheritableMember(f);
|
||||||
|
|
||||||
for (ASTPointer<VariableDeclaration> const& v: contract->getStateVariables())
|
for (ASTPointer<VariableDeclaration> const& v: getStateVariables())
|
||||||
addInheritableMember(v);
|
addInheritableMember(v);
|
||||||
|
|
||||||
for (ASTPointer<StructDefinition> const& s: contract->getDefinedStructs())
|
for (ASTPointer<StructDefinition> const& s: getDefinedStructs())
|
||||||
addInheritableMember(s);
|
addInheritableMember(s);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return *m_inheritableMembers;
|
return *m_inheritableMembers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user