mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #8431 from mijovic/sol2YulSelectorAddress
Adding sol->yul for f.selector and f.address
This commit is contained in:
@@ -2924,7 +2924,10 @@ vector<tuple<string, TypePointer>> FunctionType::makeStackItems() const
|
||||
{
|
||||
case Kind::External:
|
||||
case Kind::DelegateCall:
|
||||
slots = {make_tuple("address", TypeProvider::address()), make_tuple("functionIdentifier", TypeProvider::fixedBytes(4))};
|
||||
slots = {
|
||||
make_tuple("address", TypeProvider::address()),
|
||||
make_tuple("functionIdentifier", TypeProvider::uint(32))
|
||||
};
|
||||
break;
|
||||
case Kind::BareCall:
|
||||
case Kind::BareCallCode:
|
||||
|
||||
@@ -800,11 +800,19 @@ void IRGeneratorForStatements::endVisit(MemberAccess const& _memberAccess)
|
||||
case Type::Category::Function:
|
||||
if (member == "selector")
|
||||
{
|
||||
solUnimplementedAssert(false, "");
|
||||
solUnimplementedAssert(
|
||||
dynamic_cast<FunctionType const&>(*_memberAccess.expression().annotation().type).kind() ==
|
||||
FunctionType::Kind::External, ""
|
||||
);
|
||||
define(IRVariable{_memberAccess}, IRVariable(_memberAccess.expression()).part("functionIdentifier"));
|
||||
}
|
||||
else if (member == "address")
|
||||
{
|
||||
solUnimplementedAssert(false, "");
|
||||
solUnimplementedAssert(
|
||||
dynamic_cast<FunctionType const&>(*_memberAccess.expression().annotation().type).kind() ==
|
||||
FunctionType::Kind::External, ""
|
||||
);
|
||||
define(IRVariable{_memberAccess}, IRVariable(_memberAccess.expression()).part("address"));
|
||||
}
|
||||
else
|
||||
solAssert(
|
||||
|
||||
Reference in New Issue
Block a user