diff --git a/libsolidity/codegen/ExpressionCompiler.cpp b/libsolidity/codegen/ExpressionCompiler.cpp index c6e32f7f0..6a3d8e9b2 100644 --- a/libsolidity/codegen/ExpressionCompiler.cpp +++ b/libsolidity/codegen/ExpressionCompiler.cpp @@ -1401,6 +1401,10 @@ bool ExpressionCompiler::visit(MemberAccess const& _memberAccess) m_context << Instruction::DUP1 << u256(32) << Instruction::ADD; utils().storeStringData(contract.name()); } + else if (member == "encode" || member == "decode") + { + // no-op + } else solAssert(false, "Unknown magic member."); break; diff --git a/test/libsolidity/semanticTests/specialFunctions/abi_encode_decode_member_access.sol b/test/libsolidity/semanticTests/specialFunctions/abi_encode_decode_member_access.sol new file mode 100644 index 000000000..0c5bbd9e2 --- /dev/null +++ b/test/libsolidity/semanticTests/specialFunctions/abi_encode_decode_member_access.sol @@ -0,0 +1,8 @@ +contract C { + function f() public pure { + abi.encode; + abi.decode; + } +} +// ---- +// f() ->