Adding event and error selector fields on the lines of the function selector fields

This commit is contained in:
nishant-sachdeva
2022-05-23 10:49:16 +02:00
committed by chriseth
parent 2cb29dbd35
commit d4c06d2b4e
13 changed files with 273 additions and 5 deletions
@@ -1785,7 +1785,20 @@ void IRGeneratorForStatements::endVisit(MemberAccess const& _memberAccess)
functionType.declaration().isPartOfExternalInterface(),
""
);
define(IRVariable{_memberAccess}) << formatNumber(functionType.externalIdentifier() << 224) << "\n";
define(IRVariable{_memberAccess}) << formatNumber(
util::selectorFromSignature(functionType.externalSignature())
) << "\n";
}
else if (functionType.kind() == FunctionType::Kind::Event)
{
solAssert(functionType.hasDeclaration());
solAssert(functionType.kind() == FunctionType::Kind::Event);
solAssert(
!(dynamic_cast<EventDefinition const&>(functionType.declaration()).isAnonymous())
);
define(IRVariable{_memberAccess}) << formatNumber(
u256(h256::Arith(util::keccak256(functionType.externalSignature())))
) << "\n";
}
else
solAssert(false, "Invalid use of .selector: " + functionType.toString(false));