mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Change encoding to address-funid and add "function" as ABI type.
This commit is contained in:
@@ -236,7 +236,7 @@ bool ASTJsonConverter::visit(FunctionTypeName const& _node)
|
||||
make_pair("payable", _node.isPayable()),
|
||||
make_pair("visibility", visibility),
|
||||
make_pair("constant", _node.isDeclaredConst())
|
||||
});
|
||||
}, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1930,6 +1930,12 @@ TypePointer FunctionType::unaryOperatorResult(Token::Value _operator) const
|
||||
return TypePointer();
|
||||
}
|
||||
|
||||
string FunctionType::canonicalName(bool) const
|
||||
{
|
||||
solAssert(m_location == Location::External, "");
|
||||
return "function";
|
||||
}
|
||||
|
||||
string FunctionType::toString(bool _short) const
|
||||
{
|
||||
string name = "function (";
|
||||
@@ -2102,7 +2108,6 @@ TypePointer FunctionType::encodingType() const
|
||||
{
|
||||
// Only external functions can be encoded, internal functions cannot leave code boundaries.
|
||||
if (m_location == Location::External)
|
||||
// This looks like bytes24, but bytes24 is stored differently on the stack.
|
||||
return shared_from_this();
|
||||
else
|
||||
return TypePointer();
|
||||
@@ -2111,7 +2116,7 @@ TypePointer FunctionType::encodingType() const
|
||||
TypePointer FunctionType::interfaceType(bool /*_inLibrary*/) const
|
||||
{
|
||||
if (m_location == Location::External)
|
||||
return make_shared<FixedBytesType>(storageBytes());
|
||||
return shared_from_this();
|
||||
else
|
||||
return TypePointer();
|
||||
}
|
||||
|
||||
@@ -897,6 +897,7 @@ public:
|
||||
|
||||
virtual bool operator==(Type const& _other) const override;
|
||||
virtual TypePointer unaryOperatorResult(Token::Value _operator) const override;
|
||||
virtual std::string canonicalName(bool /*_addDataLocation*/) const override;
|
||||
virtual std::string toString(bool _short) const override;
|
||||
virtual unsigned calldataEncodedSize(bool _padded) const override;
|
||||
virtual bool canBeStored() const override { return m_location == Location::Internal || m_location == Location::External; }
|
||||
|
||||
Reference in New Issue
Block a user