mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #1072 from chriseth/sol_external
bytes ABI type and external visibility specifier
This commit is contained in:
@@ -540,12 +540,19 @@ bool ByteArrayType::operator==(Type const& _other) const
|
||||
unsigned ByteArrayType::getSizeOnStack() const
|
||||
{
|
||||
if (m_location == Location::CallData)
|
||||
return 0;
|
||||
// offset, length (stack top)
|
||||
return 2;
|
||||
else
|
||||
// offset
|
||||
return 1;
|
||||
}
|
||||
|
||||
const MemberList ByteArrayType::s_byteArrayMemberList = MemberList({{"length", make_shared<IntegerType >(256)}});
|
||||
shared_ptr<ByteArrayType> ByteArrayType::copyForLocation(ByteArrayType::Location _location) const
|
||||
{
|
||||
return make_shared<ByteArrayType>(_location);
|
||||
}
|
||||
|
||||
const MemberList ByteArrayType::s_byteArrayMemberList = MemberList({{"length", make_shared<IntegerType>(256)}});
|
||||
|
||||
bool ContractType::operator==(Type const& _other) const
|
||||
{
|
||||
@@ -572,7 +579,8 @@ MemberList const& ContractType::getMembers() const
|
||||
{
|
||||
for (ContractDefinition const* base: m_contract.getLinearizedBaseContracts())
|
||||
for (ASTPointer<FunctionDefinition> const& function: base->getDefinedFunctions())
|
||||
if (!function->isConstructor() && !function->getName().empty())
|
||||
if (!function->isConstructor() && !function->getName().empty() &&
|
||||
function->isVisibleInDerivedContracts())
|
||||
members.insert(make_pair(function->getName(), make_shared<FunctionType>(*function, true)));
|
||||
}
|
||||
else
|
||||
@@ -957,10 +965,10 @@ MemberList const& TypeType::getMembers() const
|
||||
ContractDefinition const& contract = dynamic_cast<ContractType const&>(*m_actualType).getContractDefinition();
|
||||
vector<ContractDefinition const*> currentBases = m_currentContract->getLinearizedBaseContracts();
|
||||
if (find(currentBases.begin(), currentBases.end(), &contract) != currentBases.end())
|
||||
// We are accessing the type of a base contract, so add all public and private
|
||||
// We are accessing the type of a base contract, so add all public and protected
|
||||
// functions. Note that this does not add inherited functions on purpose.
|
||||
for (ASTPointer<FunctionDefinition> const& f: contract.getDefinedFunctions())
|
||||
if (!f->isConstructor() && !f->getName().empty())
|
||||
if (!f->isConstructor() && !f->getName().empty() && f->isVisibleInDerivedContracts())
|
||||
members[f->getName()] = make_shared<FunctionType>(*f);
|
||||
}
|
||||
else if (m_actualType->getCategory() == Category::Enum)
|
||||
|
||||
Reference in New Issue
Block a user