mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Remove the assertion against functions bound to types for which should not be possible
- The list was wrong - we do support string and int literals - The assertion was meant to guard against silently skipping over types for which there is no special handling. The current code handles everything in a generic way though and likely will not have to be adjusted for newly added types so the risk of that happening is low.
This commit is contained in:
parent
4cbf9ff74c
commit
3c7112ed2b
@ -1576,19 +1576,6 @@ void IRGeneratorForStatements::endVisit(MemberAccess const& _memberAccess)
|
||||
|
||||
if (memberFunctionType && memberFunctionType->bound())
|
||||
{
|
||||
solAssert((set<Type::Category>{
|
||||
Type::Category::Contract,
|
||||
Type::Category::Bool,
|
||||
Type::Category::Integer,
|
||||
Type::Category::Address,
|
||||
Type::Category::Function,
|
||||
Type::Category::Struct,
|
||||
Type::Category::Enum,
|
||||
Type::Category::Mapping,
|
||||
Type::Category::Array,
|
||||
Type::Category::FixedBytes,
|
||||
}).count(objectCategory) > 0, "");
|
||||
|
||||
define(IRVariable(_memberAccess).part("self"), _memberAccess.expression());
|
||||
solAssert(*_memberAccess.annotation().requiredLookup == VirtualLookup::Static, "");
|
||||
if (memberFunctionType->kind() == FunctionType::Kind::Internal)
|
||||
|
@ -0,0 +1,26 @@
|
||||
library L {
|
||||
function double(uint a) internal pure returns (uint) {
|
||||
return a * 2;
|
||||
}
|
||||
|
||||
function double(bytes memory a) internal pure returns (bytes memory) {
|
||||
return bytes.concat(a, a);
|
||||
}
|
||||
}
|
||||
|
||||
contract C {
|
||||
using L for *;
|
||||
|
||||
function double42() public returns (uint) {
|
||||
return 42.double();
|
||||
}
|
||||
|
||||
function doubleABC() public returns (bytes memory) {
|
||||
return "abc".double();
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// double42() -> 84
|
||||
// doubleABC() -> 0x20, 6, "abcabc"
|
Loading…
Reference in New Issue
Block a user