diff --git a/libsolidity/codegen/ExpressionCompiler.cpp b/libsolidity/codegen/ExpressionCompiler.cpp index dc46fa2794e7..a237dd448f97 100644 --- a/libsolidity/codegen/ExpressionCompiler.cpp +++ b/libsolidity/codegen/ExpressionCompiler.cpp @@ -2050,7 +2050,7 @@ bool ExpressionCompiler::visit(MemberAccess const& _memberAccess) solAssert(false, "min/max not available for the given type."); } - else if ((std::set{"encode", "encodePacked", "encodeWithSelector", "encodeWithSignature", "decode"}).count(member)) + else if ((std::set{"encode", "encodePacked", "encodeCall", "encodeWithSelector", "encodeWithSignature", "decode"}).count(member)) { // no-op } diff --git a/test/libsolidity/semanticTests/specialFunctions/abi_functions_member_access.sol b/test/libsolidity/semanticTests/specialFunctions/abi_functions_member_access.sol index b255b1880b0e..ec5c7714900f 100644 --- a/test/libsolidity/semanticTests/specialFunctions/abi_functions_member_access.sol +++ b/test/libsolidity/semanticTests/specialFunctions/abi_functions_member_access.sol @@ -2,6 +2,7 @@ contract C { function f() public pure { abi.encode; abi.encodePacked; + abi.encodeCall; abi.encodeWithSelector; abi.encodeWithSignature; abi.decode; diff --git a/test/libsolidity/syntaxTests/specialFunctions/abi_encodeCall_member_access.sol b/test/libsolidity/syntaxTests/specialFunctions/abi_encodeCall_member_access.sol new file mode 100644 index 000000000000..925c4486d6a5 --- /dev/null +++ b/test/libsolidity/syntaxTests/specialFunctions/abi_encodeCall_member_access.sol @@ -0,0 +1,7 @@ +contract C { + function f() public pure { + abi.encodeCall; + } +} +// ---- +// Warning 6133: (52-66): Statement has no effect.