From 60af9d24ffd2587083845955176238aacb03fe61 Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 13 Oct 2020 13:28:39 +0200 Subject: [PATCH] Update tests. --- test/ExecutionFramework.cpp | 9 ++++ test/ExecutionFramework.h | 4 ++ test/cmdlineTests/exp_base_literal/output | 22 ++++++--- .../ir_compiler_subobjects/output | 10 +++- test/cmdlineTests/name_simplifier/output | 45 +++++++++++------- .../cmdlineTests/optimizer_array_sload/output | 24 ++++++++-- .../standard_generatedSources/output.json | 14 +++--- .../output.json | 10 ++-- .../standard_ir_requested/output.json | 8 ++-- .../output.json | 14 ++++-- .../yul_string_format_ascii/output.json | 8 ++-- .../output.json | 8 ++-- .../output.json | 8 ++-- .../yul_string_format_ascii_long/output.json | 8 ++-- .../yul_string_format_hex/output.json | 8 ++-- test/libsolidity/ABIEncoderTests.cpp | 2 +- test/libsolidity/SolidityEndToEndTest.cpp | 25 ++++------ .../SolidityExpressionCompiler.cpp | 43 +++++++++++------ .../arithmetics/addmod_mulmod_zero.sol | 4 +- .../arithmetics/check_var_init.sol | 2 +- .../semanticTests/arithmetics/checked_add.sol | 2 +- .../checked_called_by_unchecked.sol | 2 +- .../checked_modifier_called_by_unchecked.sol | 2 +- .../arithmetics/divisiod_by_zero.sol | 4 +- .../semanticTests/arithmetics/signed_mod.sol | 2 +- .../unchecked_called_by_checked.sol | 2 +- .../arithmetics/unchecked_div_by_zero.sol | 4 +- .../array/array_pop_empty_exception.sol | 2 +- .../array/byte_array_pop_empty_exception.sol | 2 +- .../array/calldata_slice_access.sol | 22 ++++----- ...opy_internal_function_array_to_storage.sol | 2 +- .../array/create_memory_array_too_large.sol | 4 +- .../dynamic_out_of_bounds_array_access.sol | 4 +- .../evm_exceptions_out_of_band_access.sol | 2 +- .../fixed_out_of_bounds_array_access.sol | 8 ++-- .../array/function_memory_array.sol | 2 +- .../enums/enum_explicit_overflow.sol | 7 +-- .../calling_uninitialized_function.sol | 2 +- ...lling_uninitialized_function_in_detail.sol | 2 +- ...g_uninitialized_function_through_array.sol | 2 +- .../delegatecall_return_value.sol | 6 +-- .../functionCall/transaction_status.sol | 2 +- .../functionTypes/function_delete_stack.sol | 2 +- .../functionTypes/function_delete_storage.sol | 2 +- ...ialized_internal_storage_function_call.sol | 2 +- ...base_access_to_function_type_variables.sol | 2 +- .../libraries/library_address.sol | 6 +-- .../semanticTests/reverts/assert_require.sol | 4 +- .../reverts/invalid_enum_as_external_arg.sol | 3 +- .../reverts/invalid_enum_as_external_ret.sol | 7 +-- .../reverts/invalid_enum_compared.sol | 5 +- .../reverts/invalid_enum_stored.sol | 5 +- .../semanticTests/smoke/failure.sol | 10 ++-- .../semanticTests/types/mapping_enum_key.sol | 14 +++--- .../types/mapping_enum_key_getter.sol | 9 ++-- .../types/mapping_enum_key_library.sol | 11 +++-- .../mapping_enum_key_library_encoderV2.sol | 39 ++++++++++++++++ .../types/mapping_enum_key_v2.sol | 32 +++++++++++++ .../invalidInConstructor.sol | 2 +- .../invalidStoredInConstructor.sol | 2 +- .../uninitializedFunctionPointer/store2.sol | 2 +- .../storeInConstructor.sol | 4 +- .../array_2d_zeroed_memory_index_access.sol | 4 +- .../array_array_static.sol | 2 +- .../array_zeroed_memory_index_access.sol | 2 +- .../viaYul/array_memory_as_parameter.sol | 8 ++-- .../viaYul/array_memory_index_access.sol | 10 ++-- .../viaYul/array_push_return_reference.sol | 4 +- .../viaYul/array_push_with_arg.sol | 4 +- .../array_storage_index_boundary_test.sol | 18 ++++---- .../viaYul/array_storage_pop_zero_length.sol | 2 +- .../semanticTests/viaYul/assert.sol | 4 +- .../viaYul/assert_and_require.sol | 2 +- .../viaYul/calldata_array_access.sol | 6 +-- .../calldata_array_index_range_access.sol | 4 +- .../calldata_array_three_dimensional.sol | 6 +-- .../viaYul/calldata_bytes_array_bounds.sol | 2 +- .../viaYul/cleanup/checked_arithmetic.sol | 6 +-- .../semanticTests/viaYul/delete.sol | 2 +- .../viaYul/detect_add_overflow.sol | 6 +-- .../viaYul/detect_add_overflow_signed.sol | 16 +++---- .../viaYul/detect_div_overflow.sol | 8 ++-- .../semanticTests/viaYul/detect_mod_zero.sol | 8 ++-- .../viaYul/detect_mod_zero_signed.sol | 12 ++--- .../viaYul/detect_mul_overflow.sol | 20 ++++---- .../viaYul/detect_mul_overflow_signed.sol | 46 ++++++++++++------- .../viaYul/detect_sub_overflow.sol | 4 +- .../viaYul/detect_sub_overflow_signed.sol | 22 ++++----- .../semanticTests/viaYul/erc20.sol | 4 +- .../semanticTests/viaYul/exp_literals.sol | 16 +++---- .../semanticTests/viaYul/exp_neg_overflow.sol | 32 ++++++------- .../semanticTests/viaYul/exp_overflow.sol | 24 +++++----- .../viaYul/function_pointers.sol | 4 +- .../semanticTests/viaYul/unary_operations.sol | 26 +++++------ 94 files changed, 521 insertions(+), 339 deletions(-) create mode 100644 test/libsolidity/semanticTests/types/mapping_enum_key_library_encoderV2.sol create mode 100644 test/libsolidity/semanticTests/types/mapping_enum_key_v2.sol diff --git a/test/ExecutionFramework.cpp b/test/ExecutionFramework.cpp index a17f65f3c..780bf75bf 100644 --- a/test/ExecutionFramework.cpp +++ b/test/ExecutionFramework.cpp @@ -28,6 +28,7 @@ #include #include +#include #include @@ -112,6 +113,14 @@ std::pair ExecutionFramework::compareAndCreateMessage( return make_pair(false, message); } +bytes ExecutionFramework::panicData(util::PanicCode _code) +{ + return + m_evmVersion.supportsReturndata() ? + toCompactBigEndian(selectorFromSignature32("Panic(uint256)"), 4) + encode(u256(_code)) : + bytes(); +} + u256 ExecutionFramework::gasLimit() const { return {m_evmcHost->tx_context.block_gas_limit}; diff --git a/test/ExecutionFramework.h b/test/ExecutionFramework.h index 9b01d9a91..a671ebbc7 100644 --- a/test/ExecutionFramework.h +++ b/test/ExecutionFramework.h @@ -33,6 +33,7 @@ #include #include +#include #include @@ -200,6 +201,9 @@ public: { return bytes(); } + /// @returns error returndata corresponding to the Panic(uint256) error code, + /// if REVERT is supported by the current EVM version and the empty string otherwise. + bytes panicData(util::PanicCode _code); //@todo might be extended in the future template diff --git a/test/cmdlineTests/exp_base_literal/output b/test/cmdlineTests/exp_base_literal/output index f27c69439..ae1d875ec 100644 --- a/test/cmdlineTests/exp_base_literal/output +++ b/test/cmdlineTests/exp_base_literal/output @@ -103,7 +103,7 @@ object "C_80" { memPtr := mload(64) let newFreePtr := add(memPtr, size) // protect against overflow - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } @@ -116,7 +116,7 @@ object "C_80" { function checked_exp_t_rational_10_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) - if gt(exponent, 77) { panic_error() } + if gt(exponent, 77) { panic_error_0x11() } power := exp(10, exponent) } @@ -124,7 +124,7 @@ object "C_80" { function checked_exp_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) - if gt(exponent, 1) { panic_error() } + if gt(exponent, 1) { panic_error_0x11() } power := exp(115792089237316195423570985008687907853269984665640564039457584007913129639935, exponent) } @@ -138,7 +138,7 @@ object "C_80" { function checked_exp_t_rational_2_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) - if gt(exponent, 255) { panic_error() } + if gt(exponent, 255) { panic_error_0x11() } power := exp(2, exponent) } @@ -152,7 +152,7 @@ object "C_80" { function checked_exp_t_rational_minus_2_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) - if gt(exponent, 255) { panic_error() } + if gt(exponent, 255) { panic_error_0x11() } power := exp(115792089237316195423570985008687907853269984665640564039457584007913129639934, exponent) } @@ -274,8 +274,16 @@ object "C_80" { } - function panic_error() { - invalid() + function panic_error_0x11() { + mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) + mstore(4, 0x11) + revert(0, 0x24) + } + + function panic_error_0x41() { + mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) + mstore(4, 0x41) + revert(0, 0x24) } function shift_right_224_unsigned(value) -> newValue { diff --git a/test/cmdlineTests/ir_compiler_subobjects/output b/test/cmdlineTests/ir_compiler_subobjects/output index a3a54885b..98351c41f 100644 --- a/test/cmdlineTests/ir_compiler_subobjects/output +++ b/test/cmdlineTests/ir_compiler_subobjects/output @@ -57,7 +57,7 @@ object "D_15" { if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) } let _2 := datasize("C_2") let _3 := add(128, _2) - if or(gt(_3, 0xffffffffffffffff), lt(_3, 128)) { invalid() } + if or(gt(_3, 0xffffffffffffffff), lt(_3, 128)) { panic_error_0x41() } datacopy(128, dataoffset("C_2"), _2) pop(create(_1, 128, _2)) return(allocateMemory(_1), _1) @@ -69,9 +69,15 @@ object "D_15" { { memPtr := mload(64) let newFreePtr := add(memPtr, size) - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } + function panic_error_0x41() + { + mstore(0, shl(224, 0x4e487b71)) + mstore(4, 0x41) + revert(0, 0x24) + } } object "C_2" { code { diff --git a/test/cmdlineTests/name_simplifier/output b/test/cmdlineTests/name_simplifier/output index 48c33248b..f65894fd4 100644 --- a/test/cmdlineTests/name_simplifier/output +++ b/test/cmdlineTests/name_simplifier/output @@ -33,7 +33,7 @@ object "C_59" { if gt(offset, _3) { revert(_1, _1) } if iszero(slt(add(offset, 35), calldatasize())) { revert(_1, _1) } let length := calldataload(add(4, offset)) - if gt(length, _3) { invalid() } + if gt(length, _3) { panic_error_0x41() } let _4 := mul(length, _2) let dst := allocateMemory(add(_4, _2)) let dst_1 := dst @@ -60,7 +60,7 @@ object "C_59" { if slt(sub(end, headStart), 0x20) { revert(value, value) } let memPtr := mload(64) let newFreePtr := add(memPtr, 0x20) - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) value := memPtr mstore(memPtr, calldataload(headStart)) @@ -87,14 +87,14 @@ object "C_59" { { memPtr := mload(64) let newFreePtr := add(memPtr, size) - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } function convert_t_stringliteral_6490_to_t_string() -> converted { let memPtr := mload(64) let newFreePtr := add(memPtr, 160) - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) converted := memPtr mstore(memPtr, 100) @@ -109,26 +109,37 @@ object "C_59" { } function fun_sumArray_58(vloc__s_22_mpos) -> vloc, vloc__27_mpos { - let _1 := mload(vloc__s_22_mpos) - if iszero(lt(vloc, _1)) { invalid() } - let _2 := mload(mload(add(add(vloc__s_22_mpos, mul(vloc, 32)), 32))) - let _3, _4 := storage_array_index_access$_t_struct$_S_storage(vloc, vloc) - sstore(_3, _2) - if iszero(lt(0x01, _1)) { invalid() } - let _5 := mload(mload(add(vloc__s_22_mpos, 64))) - if iszero(lt(vloc, 0x02)) { invalid() } + if iszero(lt(vloc, mload(vloc__s_22_mpos))) { panic_error_0x32() } + let _1 := mload(mload(add(add(vloc__s_22_mpos, mul(vloc, 32)), 32))) + let _2, _3 := storage_array_index_access$_t_struct$_S_storage(vloc, vloc) + sstore(_2, _1) + if iszero(lt(0x01, mload(vloc__s_22_mpos))) { panic_error_0x32() } + let _4 := mload(mload(add(vloc__s_22_mpos, 64))) + if iszero(lt(vloc, 0x02)) { panic_error_0x32() } let slot := add(0x02, vloc) - let _6 := sload(slot) + let _5 := sload(slot) let shiftBits := mul(vloc, 8) let mask := shl(shiftBits, not(0)) - sstore(slot, or(and(_6, not(mask)), and(shl(shiftBits, _5), mask))) - let _7, _8 := storage_array_index_access$_t_struct$_S_storage(0x02, vloc) - vloc := extract_from_storage_value_dynamict_uint256(sload(_7), _8) + sstore(slot, or(and(_5, not(mask)), and(shl(shiftBits, _4), mask))) + let _6, _7 := storage_array_index_access$_t_struct$_S_storage(0x02, vloc) + vloc := extract_from_storage_value_dynamict_uint256(sload(_6), _7) vloc__27_mpos := convert_t_stringliteral_6490_to_t_string() } + function panic_error_0x32() + { + mstore(0, shl(224, 0x4e487b71)) + mstore(4, 0x32) + revert(0, 0x24) + } + function panic_error_0x41() + { + mstore(0, shl(224, 0x4e487b71)) + mstore(4, 0x41) + revert(0, 0x24) + } function storage_array_index_access$_t_struct$_S_storage(array, index) -> slot, offset { - if iszero(lt(index, 0x02)) { invalid() } + if iszero(lt(index, 0x02)) { panic_error_0x32() } slot := add(array, index) offset := offset } diff --git a/test/cmdlineTests/optimizer_array_sload/output b/test/cmdlineTests/optimizer_array_sload/output index a37326eb5..b0f181563 100644 --- a/test/cmdlineTests/optimizer_array_sload/output +++ b/test/cmdlineTests/optimizer_array_sload/output @@ -33,14 +33,12 @@ object "Arraysum_33" { for { } lt(vloc_i, _2) { - if eq(vloc_i, not(0)) { invalid() } + if eq(vloc_i, not(0)) { panic_error_0x11() } vloc_i := add(vloc_i, 1) } { mstore(_1, _1) - let _3 := sload(add(keccak256(_1, 0x20), vloc_i)) - if gt(vloc_sum, not(_3)) { invalid() } - vloc_sum := add(vloc_sum, _3) + vloc_sum := checked_add_t_uint256(vloc_sum, sload(add(keccak256(_1, 0x20), vloc_i))) } let memPos := allocateMemory(_1) return(memPos, sub(abi_encode_uint(memPos, vloc_sum), memPos)) @@ -57,9 +55,25 @@ object "Arraysum_33" { { memPtr := mload(64) let newFreePtr := add(memPtr, size) - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) + { + mstore(0, shl(224, 0x4e487b71)) + mstore(4, 0x41) + revert(0, 0x24) + } mstore(64, newFreePtr) } + function checked_add_t_uint256(x, y) -> sum + { + if gt(x, not(y)) { panic_error_0x11() } + sum := add(x, y) + } + function panic_error_0x11() + { + mstore(0, shl(224, 0x4e487b71)) + mstore(4, 0x11) + revert(0, 0x24) + } } } } diff --git a/test/cmdlineTests/standard_generatedSources/output.json b/test/cmdlineTests/standard_generatedSources/output.json index d6c9d3f36..a62173127 100644 --- a/test/cmdlineTests/standard_generatedSources/output.json +++ b/test/cmdlineTests/standard_generatedSources/output.json @@ -1,4 +1,4 @@ -{"contracts":{"a.sol":{"A":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"bytecode removed","opcodes":"opcodes removed","sourceMap":"sourceMap removed"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2555:1","statements":[{"body":{"nodeType":"YulBlock","src":"101:684:1","statements":[{"body":{"nodeType":"YulBlock","src":"150:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"159:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"162:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"152:6:1"},"nodeType":"YulFunctionCall","src":"152:12:1"},"nodeType":"YulExpressionStatement","src":"152:12:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"129:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"137:4:1","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"125:3:1"},"nodeType":"YulFunctionCall","src":"125:17:1"},{"name":"end","nodeType":"YulIdentifier","src":"144:3:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"121:3:1"},"nodeType":"YulFunctionCall","src":"121:27:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:1"},"nodeType":"YulFunctionCall","src":"114:35:1"},"nodeType":"YulIf","src":"111:2:1"},{"nodeType":"YulVariableDeclaration","src":"175:34:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"202:6:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"189:12:1"},"nodeType":"YulFunctionCall","src":"189:20:1"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"179:6:1","type":""}]},{"nodeType":"YulAssignment","src":"218:89:1","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"299:6:1"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"242:56:1"},"nodeType":"YulFunctionCall","src":"242:64:1"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"227:14:1"},"nodeType":"YulFunctionCall","src":"227:80:1"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"218:5:1"}]},{"nodeType":"YulVariableDeclaration","src":"316:16:1","value":{"name":"array","nodeType":"YulIdentifier","src":"327:5:1"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"320:3:1","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"348:5:1"},{"name":"length","nodeType":"YulIdentifier","src":"355:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"341:6:1"},"nodeType":"YulFunctionCall","src":"341:21:1"},"nodeType":"YulExpressionStatement","src":"341:21:1"},{"nodeType":"YulAssignment","src":"363:27:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"377:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"385:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"373:3:1"},"nodeType":"YulFunctionCall","src":"373:17:1"},"variableNames":[{"name":"offset","nodeType":"YulIdentifier","src":"363:6:1"}]},{"nodeType":"YulAssignment","src":"391:21:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"402:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"407:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"398:3:1"},"nodeType":"YulFunctionCall","src":"398:14:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"391:3:1"}]},{"nodeType":"YulVariableDeclaration","src":"452:17:1","value":{"name":"offset","nodeType":"YulIdentifier","src":"463:6:1"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"456:3:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"518:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"527:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"530:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"520:6:1"},"nodeType":"YulFunctionCall","src":"520:12:1"},"nodeType":"YulExpressionStatement","src":"520:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"488:3:1"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"497:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"505:4:1","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"493:3:1"},"nodeType":"YulFunctionCall","src":"493:17:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"484:3:1"},"nodeType":"YulFunctionCall","src":"484:27:1"},{"name":"end","nodeType":"YulIdentifier","src":"513:3:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"481:2:1"},"nodeType":"YulFunctionCall","src":"481:36:1"},"nodeType":"YulIf","src":"478:2:1"},{"body":{"nodeType":"YulBlock","src":"603:176:1","statements":[{"nodeType":"YulVariableDeclaration","src":"617:21:1","value":{"name":"src","nodeType":"YulIdentifier","src":"635:3:1"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"621:10:1","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"658:3:1"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"684:10:1"},{"name":"end","nodeType":"YulIdentifier","src":"696:3:1"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"663:20:1"},"nodeType":"YulFunctionCall","src":"663:37:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"651:6:1"},"nodeType":"YulFunctionCall","src":"651:50:1"},"nodeType":"YulExpressionStatement","src":"651:50:1"},{"nodeType":"YulAssignment","src":"714:21:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"725:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"730:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"721:3:1"},"nodeType":"YulFunctionCall","src":"721:14:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"714:3:1"}]},{"nodeType":"YulAssignment","src":"748:21:1","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"759:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"764:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"755:3:1"},"nodeType":"YulFunctionCall","src":"755:14:1"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"748:3:1"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"565:1:1"},{"name":"length","nodeType":"YulIdentifier","src":"568:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:1"},"nodeType":"YulFunctionCall","src":"562:13:1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"576:18:1","statements":[{"nodeType":"YulAssignment","src":"578:14:1","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"587:1:1"},{"kind":"number","nodeType":"YulLiteral","src":"590:1:1","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"583:3:1"},"nodeType":"YulFunctionCall","src":"583:9:1"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"578:1:1"}]}]},"pre":{"nodeType":"YulBlock","src":"547:14:1","statements":[{"nodeType":"YulVariableDeclaration","src":"549:10:1","value":{"kind":"number","nodeType":"YulLiteral","src":"558:1:1","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"553:1:1","type":""}]}]},"src":"543:236:1"}]},"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"79:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"87:3:1","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"95:5:1","type":""}],"src":"24:761:1"},{"body":{"nodeType":"YulBlock","src":"843:87:1","statements":[{"nodeType":"YulAssignment","src":"853:29:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"875:6:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"862:12:1"},"nodeType":"YulFunctionCall","src":"862:20:1"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"853:5:1"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"918:5:1"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"891:26:1"},"nodeType":"YulFunctionCall","src":"891:33:1"},"nodeType":"YulExpressionStatement","src":"891:33:1"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"821:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"829:3:1","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"837:5:1","type":""}],"src":"791:139:1"},{"body":{"nodeType":"YulBlock","src":"1027:312:1","statements":[{"body":{"nodeType":"YulBlock","src":"1073:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1082:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1085:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1075:6:1"},"nodeType":"YulFunctionCall","src":"1075:12:1"},"nodeType":"YulExpressionStatement","src":"1075:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1048:7:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"1057:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1044:3:1"},"nodeType":"YulFunctionCall","src":"1044:23:1"},{"kind":"number","nodeType":"YulLiteral","src":"1069:2:1","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1040:3:1"},"nodeType":"YulFunctionCall","src":"1040:32:1"},"nodeType":"YulIf","src":"1037:2:1"},{"nodeType":"YulBlock","src":"1099:233:1","statements":[{"nodeType":"YulVariableDeclaration","src":"1113:45:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1144:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1155:1:1","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1140:3:1"},"nodeType":"YulFunctionCall","src":"1140:17:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1127:12:1"},"nodeType":"YulFunctionCall","src":"1127:31:1"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1117:6:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1205:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1214:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1217:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1207:6:1"},"nodeType":"YulFunctionCall","src":"1207:12:1"},"nodeType":"YulExpressionStatement","src":"1207:12:1"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1177:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"1185:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1174:2:1"},"nodeType":"YulFunctionCall","src":"1174:30:1"},"nodeType":"YulIf","src":"1171:2:1"},{"nodeType":"YulAssignment","src":"1234:88:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1294:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"1305:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1290:3:1"},"nodeType":"YulFunctionCall","src":"1290:22:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1314:7:1"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"1244:45:1"},"nodeType":"YulFunctionCall","src":"1244:78:1"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1234:6:1"}]}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"997:9:1","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1008:7:1","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1020:6:1","type":""}],"src":"936:403:1"},{"body":{"nodeType":"YulBlock","src":"1410:53:1","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1427:3:1"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1450:5:1"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1432:17:1"},"nodeType":"YulFunctionCall","src":"1432:24:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1420:6:1"},"nodeType":"YulFunctionCall","src":"1420:37:1"},"nodeType":"YulExpressionStatement","src":"1420:37:1"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1398:5:1","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1405:3:1","type":""}],"src":"1345:118:1"},{"body":{"nodeType":"YulBlock","src":"1567:124:1","statements":[{"nodeType":"YulAssignment","src":"1577:26:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1589:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1600:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1585:3:1"},"nodeType":"YulFunctionCall","src":"1585:18:1"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1577:4:1"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1657:6:1"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1670:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1681:1:1","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1666:3:1"},"nodeType":"YulFunctionCall","src":"1666:17:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"1613:43:1"},"nodeType":"YulFunctionCall","src":"1613:71:1"},"nodeType":"YulExpressionStatement","src":"1613:71:1"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1539:9:1","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1551:6:1","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1562:4:1","type":""}],"src":"1469:222:1"},{"body":{"nodeType":"YulBlock","src":"1737:238:1","statements":[{"nodeType":"YulAssignment","src":"1747:19:1","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1763:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1757:5:1"},"nodeType":"YulFunctionCall","src":"1757:9:1"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1747:6:1"}]},{"nodeType":"YulVariableDeclaration","src":"1775:35:1","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1797:6:1"},{"name":"size","nodeType":"YulIdentifier","src":"1805:4:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1793:3:1"},"nodeType":"YulFunctionCall","src":"1793:17:1"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1779:10:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1921:17:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error","nodeType":"YulIdentifier","src":"1923:11:1"},"nodeType":"YulFunctionCall","src":"1923:13:1"},"nodeType":"YulExpressionStatement","src":"1923:13:1"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1864:10:1"},{"kind":"number","nodeType":"YulLiteral","src":"1876:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1861:2:1"},"nodeType":"YulFunctionCall","src":"1861:34:1"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1900:10:1"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1912:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1897:2:1"},"nodeType":"YulFunctionCall","src":"1897:22:1"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1858:2:1"},"nodeType":"YulFunctionCall","src":"1858:62:1"},"nodeType":"YulIf","src":"1855:2:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1954:2:1","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1958:10:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1947:6:1"},"nodeType":"YulFunctionCall","src":"1947:22:1"},"nodeType":"YulExpressionStatement","src":"1947:22:1"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1721:4:1","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1730:6:1","type":""}],"src":"1697:278:1"},{"body":{"nodeType":"YulBlock","src":"2063:224:1","statements":[{"body":{"nodeType":"YulBlock","src":"2168:17:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error","nodeType":"YulIdentifier","src":"2170:11:1"},"nodeType":"YulFunctionCall","src":"2170:13:1"},"nodeType":"YulExpressionStatement","src":"2170:13:1"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2140:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"2148:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2137:2:1"},"nodeType":"YulFunctionCall","src":"2137:30:1"},"nodeType":"YulIf","src":"2134:2:1"},{"nodeType":"YulAssignment","src":"2195:25:1","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2207:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"2215:4:1","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2203:3:1"},"nodeType":"YulFunctionCall","src":"2203:17:1"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2195:4:1"}]},{"nodeType":"YulAssignment","src":"2257:23:1","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2269:4:1"},{"kind":"number","nodeType":"YulLiteral","src":"2275:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2265:3:1"},"nodeType":"YulFunctionCall","src":"2265:15:1"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2257:4:1"}]}]},"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2047:6:1","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2058:4:1","type":""}],"src":"1981:306:1"},{"body":{"nodeType":"YulBlock","src":"2338:32:1","statements":[{"nodeType":"YulAssignment","src":"2348:16:1","value":{"name":"value","nodeType":"YulIdentifier","src":"2359:5:1"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2348:7:1"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2320:5:1","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2330:7:1","type":""}],"src":"2293:77:1"},{"body":{"nodeType":"YulBlock","src":"2399:25:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"2409:7:1"},"nodeType":"YulFunctionCall","src":"2409:9:1"},"nodeType":"YulExpressionStatement","src":"2409:9:1"}]},"name":"panic_error","nodeType":"YulFunctionDefinition","src":"2376:48:1"},{"body":{"nodeType":"YulBlock","src":"2473:79:1","statements":[{"body":{"nodeType":"YulBlock","src":"2530:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2539:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2542:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2532:6:1"},"nodeType":"YulFunctionCall","src":"2532:12:1"},"nodeType":"YulExpressionStatement","src":"2532:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2496:5:1"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2521:5:1"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2503:17:1"},"nodeType":"YulFunctionCall","src":"2503:24:1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2493:2:1"},"nodeType":"YulFunctionCall","src":"2493:35:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2486:6:1"},"nodeType":"YulFunctionCall","src":"2486:43:1"},"nodeType":"YulIf","src":"2483:2:1"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2466:5:1","type":""}],"src":"2430:122:1"}]},"contents":"{ +{"contracts":{"a.sol":{"A":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"bytecode removed","opcodes":"opcodes removed","sourceMap":"sourceMap removed"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2697:1","statements":[{"body":{"nodeType":"YulBlock","src":"101:684:1","statements":[{"body":{"nodeType":"YulBlock","src":"150:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"159:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"162:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"152:6:1"},"nodeType":"YulFunctionCall","src":"152:12:1"},"nodeType":"YulExpressionStatement","src":"152:12:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"129:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"137:4:1","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"125:3:1"},"nodeType":"YulFunctionCall","src":"125:17:1"},{"name":"end","nodeType":"YulIdentifier","src":"144:3:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"121:3:1"},"nodeType":"YulFunctionCall","src":"121:27:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:1"},"nodeType":"YulFunctionCall","src":"114:35:1"},"nodeType":"YulIf","src":"111:2:1"},{"nodeType":"YulVariableDeclaration","src":"175:34:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"202:6:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"189:12:1"},"nodeType":"YulFunctionCall","src":"189:20:1"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"179:6:1","type":""}]},{"nodeType":"YulAssignment","src":"218:89:1","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"299:6:1"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"242:56:1"},"nodeType":"YulFunctionCall","src":"242:64:1"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"227:14:1"},"nodeType":"YulFunctionCall","src":"227:80:1"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"218:5:1"}]},{"nodeType":"YulVariableDeclaration","src":"316:16:1","value":{"name":"array","nodeType":"YulIdentifier","src":"327:5:1"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"320:3:1","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"348:5:1"},{"name":"length","nodeType":"YulIdentifier","src":"355:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"341:6:1"},"nodeType":"YulFunctionCall","src":"341:21:1"},"nodeType":"YulExpressionStatement","src":"341:21:1"},{"nodeType":"YulAssignment","src":"363:27:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"377:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"385:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"373:3:1"},"nodeType":"YulFunctionCall","src":"373:17:1"},"variableNames":[{"name":"offset","nodeType":"YulIdentifier","src":"363:6:1"}]},{"nodeType":"YulAssignment","src":"391:21:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"402:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"407:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"398:3:1"},"nodeType":"YulFunctionCall","src":"398:14:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"391:3:1"}]},{"nodeType":"YulVariableDeclaration","src":"452:17:1","value":{"name":"offset","nodeType":"YulIdentifier","src":"463:6:1"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"456:3:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"518:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"527:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"530:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"520:6:1"},"nodeType":"YulFunctionCall","src":"520:12:1"},"nodeType":"YulExpressionStatement","src":"520:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"488:3:1"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"497:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"505:4:1","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"493:3:1"},"nodeType":"YulFunctionCall","src":"493:17:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"484:3:1"},"nodeType":"YulFunctionCall","src":"484:27:1"},{"name":"end","nodeType":"YulIdentifier","src":"513:3:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"481:2:1"},"nodeType":"YulFunctionCall","src":"481:36:1"},"nodeType":"YulIf","src":"478:2:1"},{"body":{"nodeType":"YulBlock","src":"603:176:1","statements":[{"nodeType":"YulVariableDeclaration","src":"617:21:1","value":{"name":"src","nodeType":"YulIdentifier","src":"635:3:1"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"621:10:1","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"658:3:1"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"684:10:1"},{"name":"end","nodeType":"YulIdentifier","src":"696:3:1"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"663:20:1"},"nodeType":"YulFunctionCall","src":"663:37:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"651:6:1"},"nodeType":"YulFunctionCall","src":"651:50:1"},"nodeType":"YulExpressionStatement","src":"651:50:1"},{"nodeType":"YulAssignment","src":"714:21:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"725:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"730:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"721:3:1"},"nodeType":"YulFunctionCall","src":"721:14:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"714:3:1"}]},{"nodeType":"YulAssignment","src":"748:21:1","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"759:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"764:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"755:3:1"},"nodeType":"YulFunctionCall","src":"755:14:1"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"748:3:1"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"565:1:1"},{"name":"length","nodeType":"YulIdentifier","src":"568:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:1"},"nodeType":"YulFunctionCall","src":"562:13:1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"576:18:1","statements":[{"nodeType":"YulAssignment","src":"578:14:1","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"587:1:1"},{"kind":"number","nodeType":"YulLiteral","src":"590:1:1","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"583:3:1"},"nodeType":"YulFunctionCall","src":"583:9:1"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"578:1:1"}]}]},"pre":{"nodeType":"YulBlock","src":"547:14:1","statements":[{"nodeType":"YulVariableDeclaration","src":"549:10:1","value":{"kind":"number","nodeType":"YulLiteral","src":"558:1:1","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"553:1:1","type":""}]}]},"src":"543:236:1"}]},"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"79:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"87:3:1","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"95:5:1","type":""}],"src":"24:761:1"},{"body":{"nodeType":"YulBlock","src":"843:87:1","statements":[{"nodeType":"YulAssignment","src":"853:29:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"875:6:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"862:12:1"},"nodeType":"YulFunctionCall","src":"862:20:1"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"853:5:1"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"918:5:1"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"891:26:1"},"nodeType":"YulFunctionCall","src":"891:33:1"},"nodeType":"YulExpressionStatement","src":"891:33:1"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"821:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"829:3:1","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"837:5:1","type":""}],"src":"791:139:1"},{"body":{"nodeType":"YulBlock","src":"1027:312:1","statements":[{"body":{"nodeType":"YulBlock","src":"1073:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1082:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1085:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1075:6:1"},"nodeType":"YulFunctionCall","src":"1075:12:1"},"nodeType":"YulExpressionStatement","src":"1075:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1048:7:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"1057:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1044:3:1"},"nodeType":"YulFunctionCall","src":"1044:23:1"},{"kind":"number","nodeType":"YulLiteral","src":"1069:2:1","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1040:3:1"},"nodeType":"YulFunctionCall","src":"1040:32:1"},"nodeType":"YulIf","src":"1037:2:1"},{"nodeType":"YulBlock","src":"1099:233:1","statements":[{"nodeType":"YulVariableDeclaration","src":"1113:45:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1144:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1155:1:1","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1140:3:1"},"nodeType":"YulFunctionCall","src":"1140:17:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1127:12:1"},"nodeType":"YulFunctionCall","src":"1127:31:1"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1117:6:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1205:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1214:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1217:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1207:6:1"},"nodeType":"YulFunctionCall","src":"1207:12:1"},"nodeType":"YulExpressionStatement","src":"1207:12:1"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1177:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"1185:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1174:2:1"},"nodeType":"YulFunctionCall","src":"1174:30:1"},"nodeType":"YulIf","src":"1171:2:1"},{"nodeType":"YulAssignment","src":"1234:88:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1294:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"1305:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1290:3:1"},"nodeType":"YulFunctionCall","src":"1290:22:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1314:7:1"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"1244:45:1"},"nodeType":"YulFunctionCall","src":"1244:78:1"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1234:6:1"}]}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"997:9:1","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1008:7:1","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1020:6:1","type":""}],"src":"936:403:1"},{"body":{"nodeType":"YulBlock","src":"1410:53:1","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1427:3:1"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1450:5:1"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1432:17:1"},"nodeType":"YulFunctionCall","src":"1432:24:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1420:6:1"},"nodeType":"YulFunctionCall","src":"1420:37:1"},"nodeType":"YulExpressionStatement","src":"1420:37:1"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1398:5:1","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1405:3:1","type":""}],"src":"1345:118:1"},{"body":{"nodeType":"YulBlock","src":"1567:124:1","statements":[{"nodeType":"YulAssignment","src":"1577:26:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1589:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1600:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1585:3:1"},"nodeType":"YulFunctionCall","src":"1585:18:1"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1577:4:1"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1657:6:1"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1670:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1681:1:1","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1666:3:1"},"nodeType":"YulFunctionCall","src":"1666:17:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"1613:43:1"},"nodeType":"YulFunctionCall","src":"1613:71:1"},"nodeType":"YulExpressionStatement","src":"1613:71:1"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1539:9:1","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1551:6:1","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1562:4:1","type":""}],"src":"1469:222:1"},{"body":{"nodeType":"YulBlock","src":"1737:243:1","statements":[{"nodeType":"YulAssignment","src":"1747:19:1","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1763:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1757:5:1"},"nodeType":"YulFunctionCall","src":"1757:9:1"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1747:6:1"}]},{"nodeType":"YulVariableDeclaration","src":"1775:35:1","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1797:6:1"},{"name":"size","nodeType":"YulIdentifier","src":"1805:4:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1793:3:1"},"nodeType":"YulFunctionCall","src":"1793:17:1"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1779:10:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1921:22:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1923:16:1"},"nodeType":"YulFunctionCall","src":"1923:18:1"},"nodeType":"YulExpressionStatement","src":"1923:18:1"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1864:10:1"},{"kind":"number","nodeType":"YulLiteral","src":"1876:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1861:2:1"},"nodeType":"YulFunctionCall","src":"1861:34:1"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1900:10:1"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1912:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1897:2:1"},"nodeType":"YulFunctionCall","src":"1897:22:1"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1858:2:1"},"nodeType":"YulFunctionCall","src":"1858:62:1"},"nodeType":"YulIf","src":"1855:2:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1959:2:1","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1963:10:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1952:6:1"},"nodeType":"YulFunctionCall","src":"1952:22:1"},"nodeType":"YulExpressionStatement","src":"1952:22:1"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1721:4:1","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1730:6:1","type":""}],"src":"1697:283:1"},{"body":{"nodeType":"YulBlock","src":"2068:229:1","statements":[{"body":{"nodeType":"YulBlock","src":"2173:22:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2175:16:1"},"nodeType":"YulFunctionCall","src":"2175:18:1"},"nodeType":"YulExpressionStatement","src":"2175:18:1"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2145:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"2153:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2142:2:1"},"nodeType":"YulFunctionCall","src":"2142:30:1"},"nodeType":"YulIf","src":"2139:2:1"},{"nodeType":"YulAssignment","src":"2205:25:1","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2217:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"2225:4:1","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2213:3:1"},"nodeType":"YulFunctionCall","src":"2213:17:1"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2205:4:1"}]},{"nodeType":"YulAssignment","src":"2267:23:1","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2279:4:1"},{"kind":"number","nodeType":"YulLiteral","src":"2285:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2275:3:1"},"nodeType":"YulFunctionCall","src":"2275:15:1"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2267:4:1"}]}]},"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2052:6:1","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2063:4:1","type":""}],"src":"1986:311:1"},{"body":{"nodeType":"YulBlock","src":"2348:32:1","statements":[{"nodeType":"YulAssignment","src":"2358:16:1","value":{"name":"value","nodeType":"YulIdentifier","src":"2369:5:1"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2358:7:1"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2330:5:1","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2340:7:1","type":""}],"src":"2303:77:1"},{"body":{"nodeType":"YulBlock","src":"2414:152:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:77:1","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2424:6:1"},"nodeType":"YulFunctionCall","src":"2424:88:1"},"nodeType":"YulExpressionStatement","src":"2424:88:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2528:1:1","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2531:4:1","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2521:6:1"},"nodeType":"YulFunctionCall","src":"2521:15:1"},"nodeType":"YulExpressionStatement","src":"2521:15:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2552:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2555:4:1","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2545:6:1"},"nodeType":"YulFunctionCall","src":"2545:15:1"},"nodeType":"YulExpressionStatement","src":"2545:15:1"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2386:180:1"},{"body":{"nodeType":"YulBlock","src":"2615:79:1","statements":[{"body":{"nodeType":"YulBlock","src":"2672:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2681:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2684:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2674:6:1"},"nodeType":"YulFunctionCall","src":"2674:12:1"},"nodeType":"YulExpressionStatement","src":"2674:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2638:5:1"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2663:5:1"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2645:17:1"},"nodeType":"YulFunctionCall","src":"2645:24:1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2635:2:1"},"nodeType":"YulFunctionCall","src":"2635:35:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2628:6:1"},"nodeType":"YulFunctionCall","src":"2628:43:1"},"nodeType":"YulIf","src":"2625:2:1"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2608:5:1","type":""}],"src":"2572:122:1"}]},"contents":"{ // uint256[] function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array { @@ -49,13 +49,13 @@ memPtr := mload(64) let newFreePtr := add(memPtr, size) // protect against overflow - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size { // Make sure we can allocate memory without overflow - if gt(length, 0xffffffffffffffff) { panic_error() } + if gt(length, 0xffffffffffffffff) { panic_error_0x41() } size := mul(length, 0x20) @@ -68,8 +68,10 @@ cleaned := value } - function panic_error() { - invalid() + function panic_error_0x41() { + mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) + mstore(4, 0x41) + revert(0, 0x24) } function validator_revert_t_uint256(value) { @@ -77,5 +79,5 @@ } } -","id":1,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"bytecode removed","opcodes":"opcodes removed","sourceMap":"70:74:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;83:59;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;130:7;83:59;;;:::o;24:761:1:-;;144:3;137:4;129:6;125:17;121:27;111:2;;162:1;159;152:12;111:2;202:6;189:20;227:80;242:64;299:6;242:64;:::i;:::-;227:80;:::i;:::-;218:89;;327:5;355:6;348:5;341:21;385:4;377:6;373:17;363:27;;407:4;402:3;398:14;391:21;;463:6;513:3;505:4;497:6;493:17;488:3;484:27;481:36;478:2;;;530:1;527;520:12;478:2;558:1;543:236;568:6;565:1;562:13;543:236;;;635:3;663:37;696:3;684:10;663:37;:::i;:::-;658:3;651:50;730:4;725:3;721:14;714:21;;764:4;759:3;755:14;748:21;;603:176;590:1;587;583:9;578:14;;543:236;;;547:14;101:684;;;;;;;:::o;791:139::-;;875:6;862:20;853:29;;891:33;918:5;891:33;:::i;:::-;843:87;;;;:::o;936:403::-;;1069:2;1057:9;1048:7;1044:23;1040:32;1037:2;;;1085:1;1082;1075:12;1037:2;1155:1;1144:9;1140:17;1127:31;1185:18;1177:6;1174:30;1171:2;;;1217:1;1214;1207:12;1171:2;1244:78;1314:7;1305:6;1294:9;1290:22;1244:78;:::i;:::-;1234:88;;1099:233;1027:312;;;;:::o;1345:118::-;1432:24;1450:5;1432:24;:::i;:::-;1427:3;1420:37;1410:53;;:::o;1469:222::-;;1600:2;1589:9;1585:18;1577:26;;1613:71;1681:1;1670:9;1666:17;1657:6;1613:71;:::i;:::-;1567:124;;;;:::o;1697:278::-;;1763:2;1757:9;1747:19;;1805:4;1797:6;1793:17;1912:6;1900:10;1897:22;1876:18;1864:10;1861:34;1858:62;1855:2;;;1923:13;;:::i;:::-;1855:2;1958:10;1954:2;1947:22;1737:238;;;;:::o;1981:306::-;;2148:18;2140:6;2137:30;2134:2;;;2170:13;;:::i;:::-;2134:2;2215:4;2207:6;2203:17;2195:25;;2275:4;2269;2265:15;2257:23;;2063:224;;;:::o;2293:77::-;;2359:5;2348:16;;2338:32;;;:::o;2376:48::-;2409:9;2430:122;2503:24;2521:5;2503:24;:::i;:::-;2496:5;2493:35;2483:2;;2542:1;2539;2532:12;2483:2;2473:79;:::o"}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! +","id":1,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"bytecode removed","opcodes":"opcodes removed","sourceMap":"70:74:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;83:59;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;130:7;83:59;;;:::o;24:761:1:-;;144:3;137:4;129:6;125:17;121:27;111:2;;162:1;159;152:12;111:2;202:6;189:20;227:80;242:64;299:6;242:64;:::i;:::-;227:80;:::i;:::-;218:89;;327:5;355:6;348:5;341:21;385:4;377:6;373:17;363:27;;407:4;402:3;398:14;391:21;;463:6;513:3;505:4;497:6;493:17;488:3;484:27;481:36;478:2;;;530:1;527;520:12;478:2;558:1;543:236;568:6;565:1;562:13;543:236;;;635:3;663:37;696:3;684:10;663:37;:::i;:::-;658:3;651:50;730:4;725:3;721:14;714:21;;764:4;759:3;755:14;748:21;;603:176;590:1;587;583:9;578:14;;543:236;;;547:14;101:684;;;;;;;:::o;791:139::-;;875:6;862:20;853:29;;891:33;918:5;891:33;:::i;:::-;843:87;;;;:::o;936:403::-;;1069:2;1057:9;1048:7;1044:23;1040:32;1037:2;;;1085:1;1082;1075:12;1037:2;1155:1;1144:9;1140:17;1127:31;1185:18;1177:6;1174:30;1171:2;;;1217:1;1214;1207:12;1171:2;1244:78;1314:7;1305:6;1294:9;1290:22;1244:78;:::i;:::-;1234:88;;1099:233;1027:312;;;;:::o;1345:118::-;1432:24;1450:5;1432:24;:::i;:::-;1427:3;1420:37;1410:53;;:::o;1469:222::-;;1600:2;1589:9;1585:18;1577:26;;1613:71;1681:1;1670:9;1666:17;1657:6;1613:71;:::i;:::-;1567:124;;;;:::o;1697:283::-;;1763:2;1757:9;1747:19;;1805:4;1797:6;1793:17;1912:6;1900:10;1897:22;1876:18;1864:10;1861:34;1858:62;1855:2;;;1923:18;;:::i;:::-;1855:2;1963:10;1959:2;1952:22;1737:243;;;;:::o;1986:311::-;;2153:18;2145:6;2142:30;2139:2;;;2175:18;;:::i;:::-;2139:2;2225:4;2217:6;2213:17;2205:25;;2285:4;2279;2275:15;2267:23;;2068:229;;;:::o;2303:77::-;;2369:5;2358:16;;2348:32;;;:::o;2386:180::-;2434:77;2431:1;2424:88;2531:4;2528:1;2521:15;2555:4;2552:1;2545:15;2572:122;2645:24;2663:5;2645:24;:::i;:::-;2638:5;2635:35;2625:2;;2684:1;2681;2674:12;2625:2;2615:79;:::o"}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"a.sol","start":-1},"type":"Warning"}],"sources":{"a.sol":{"id":0}}} diff --git a/test/cmdlineTests/standard_irOptimized_requested/output.json b/test/cmdlineTests/standard_irOptimized_requested/output.json index dd7c82123..1dcc28d4b 100644 --- a/test/cmdlineTests/standard_irOptimized_requested/output.json +++ b/test/cmdlineTests/standard_irOptimized_requested/output.json @@ -44,13 +44,17 @@ object \"C_6\" { { memPtr := mload(64) let newFreePtr := add(memPtr, size) - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } function fun_f_5() { } - function panic_error() - { invalid() } + function panic_error_0x41() + { + mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) + mstore(4, 0x41) + revert(0, 0x24) + } function shift_right_224_unsigned(value) -> newValue { newValue := shr(224, value) } } diff --git a/test/cmdlineTests/standard_ir_requested/output.json b/test/cmdlineTests/standard_ir_requested/output.json index d46256ee7..38e8e02c1 100644 --- a/test/cmdlineTests/standard_ir_requested/output.json +++ b/test/cmdlineTests/standard_ir_requested/output.json @@ -61,7 +61,7 @@ object \"C_6\" { memPtr := mload(64) let newFreePtr := add(memPtr, size) // protect against overflow - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } @@ -69,8 +69,10 @@ object \"C_6\" { } - function panic_error() { - invalid() + function panic_error_0x41() { + mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) + mstore(4, 0x41) + revert(0, 0x24) } function shift_right_224_unsigned(value) -> newValue { diff --git a/test/cmdlineTests/standard_optimizer_generatedSources/output.json b/test/cmdlineTests/standard_optimizer_generatedSources/output.json index 6bb53f856..79b0f11a2 100644 --- a/test/cmdlineTests/standard_optimizer_generatedSources/output.json +++ b/test/cmdlineTests/standard_optimizer_generatedSources/output.json @@ -1,4 +1,4 @@ -{"contracts":{"a.sol":{"A":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"bytecode removed","opcodes":"opcodes removed","sourceMap":"sourceMap removed"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1458:1","statements":[{"nodeType":"YulBlock","src":"6:3:1","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:918:1","statements":[{"nodeType":"YulVariableDeclaration","src":"119:12:1","value":{"kind":"number","nodeType":"YulLiteral","src":"129:2:1","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"123:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"185:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"193:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"178:6:1"},"nodeType":"YulFunctionCall","src":"178:22:1"},"nodeType":"YulExpressionStatement","src":"178:22:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"151:7:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"160:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"147:3:1"},"nodeType":"YulFunctionCall","src":"147:23:1"},{"name":"_1","nodeType":"YulIdentifier","src":"172:2:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"143:3:1"},"nodeType":"YulFunctionCall","src":"143:32:1"},"nodeType":"YulIf","src":"140:2:1"},{"nodeType":"YulVariableDeclaration","src":"211:37:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"238:9:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"225:12:1"},"nodeType":"YulFunctionCall","src":"225:23:1"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"215:6:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"257:28:1","value":{"kind":"number","nodeType":"YulLiteral","src":"267:18:1","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"261:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"312:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"321:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"329:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"314:6:1"},"nodeType":"YulFunctionCall","src":"314:22:1"},"nodeType":"YulExpressionStatement","src":"314:22:1"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:1"},{"name":"_2","nodeType":"YulIdentifier","src":"308:2:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"297:2:1"},"nodeType":"YulFunctionCall","src":"297:14:1"},"nodeType":"YulIf","src":"294:2:1"},{"nodeType":"YulVariableDeclaration","src":"347:32:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"361:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"372:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"357:3:1"},"nodeType":"YulFunctionCall","src":"357:22:1"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"351:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"427:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"436:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"444:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"429:6:1"},"nodeType":"YulFunctionCall","src":"429:22:1"},"nodeType":"YulExpressionStatement","src":"429:22:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"406:2:1"},{"kind":"number","nodeType":"YulLiteral","src":"410:4:1","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"402:3:1"},"nodeType":"YulFunctionCall","src":"402:13:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"417:7:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"398:3:1"},"nodeType":"YulFunctionCall","src":"398:27:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"391:6:1"},"nodeType":"YulFunctionCall","src":"391:35:1"},"nodeType":"YulIf","src":"388:2:1"},{"nodeType":"YulVariableDeclaration","src":"462:30:1","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"489:2:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"476:12:1"},"nodeType":"YulFunctionCall","src":"476:16:1"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"466:6:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"519:13:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"521:7:1"},"nodeType":"YulFunctionCall","src":"521:9:1"},"nodeType":"YulExpressionStatement","src":"521:9:1"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"507:6:1"},{"name":"_2","nodeType":"YulIdentifier","src":"515:2:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"504:2:1"},"nodeType":"YulFunctionCall","src":"504:14:1"},"nodeType":"YulIf","src":"501:2:1"},{"nodeType":"YulVariableDeclaration","src":"541:25:1","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"555:6:1"},{"name":"_1","nodeType":"YulIdentifier","src":"563:2:1"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"551:3:1"},"nodeType":"YulFunctionCall","src":"551:15:1"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"545:2:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"575:38:1","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"605:2:1"},{"name":"_1","nodeType":"YulIdentifier","src":"609:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"601:3:1"},"nodeType":"YulFunctionCall","src":"601:11:1"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"586:14:1"},"nodeType":"YulFunctionCall","src":"586:27:1"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"579:3:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"622:16:1","value":{"name":"dst","nodeType":"YulIdentifier","src":"635:3:1"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"626:5:1","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"654:3:1"},{"name":"length","nodeType":"YulIdentifier","src":"659:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"647:6:1"},"nodeType":"YulFunctionCall","src":"647:19:1"},"nodeType":"YulExpressionStatement","src":"647:19:1"},{"nodeType":"YulAssignment","src":"675:19:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"686:3:1"},{"name":"_1","nodeType":"YulIdentifier","src":"691:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"682:3:1"},"nodeType":"YulFunctionCall","src":"682:12:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"675:3:1"}]},{"nodeType":"YulVariableDeclaration","src":"703:22:1","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"718:2:1"},{"name":"_1","nodeType":"YulIdentifier","src":"722:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"714:3:1"},"nodeType":"YulFunctionCall","src":"714:11:1"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"707:3:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"771:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"780:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"788:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"773:6:1"},"nodeType":"YulFunctionCall","src":"773:22:1"},"nodeType":"YulExpressionStatement","src":"773:22:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"748:2:1"},{"name":"_4","nodeType":"YulIdentifier","src":"752:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"744:3:1"},"nodeType":"YulFunctionCall","src":"744:11:1"},{"name":"_1","nodeType":"YulIdentifier","src":"757:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"740:3:1"},"nodeType":"YulFunctionCall","src":"740:20:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"762:7:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"737:2:1"},"nodeType":"YulFunctionCall","src":"737:33:1"},"nodeType":"YulIf","src":"734:2:1"},{"nodeType":"YulVariableDeclaration","src":"806:15:1","value":{"name":"value0","nodeType":"YulIdentifier","src":"815:6:1"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"810:1:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"879:118:1","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"900:3:1"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"918:3:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"905:12:1"},"nodeType":"YulFunctionCall","src":"905:17:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"893:6:1"},"nodeType":"YulFunctionCall","src":"893:30:1"},"nodeType":"YulExpressionStatement","src":"893:30:1"},{"nodeType":"YulAssignment","src":"936:19:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"947:3:1"},{"name":"_1","nodeType":"YulIdentifier","src":"952:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"943:3:1"},"nodeType":"YulFunctionCall","src":"943:12:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"936:3:1"}]},{"nodeType":"YulAssignment","src":"968:19:1","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"979:3:1"},{"name":"_1","nodeType":"YulIdentifier","src":"984:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"975:3:1"},"nodeType":"YulFunctionCall","src":"975:12:1"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"968:3:1"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"841:1:1"},{"name":"length","nodeType":"YulIdentifier","src":"844:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"838:2:1"},"nodeType":"YulFunctionCall","src":"838:13:1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"852:18:1","statements":[{"nodeType":"YulAssignment","src":"854:14:1","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"863:1:1"},{"kind":"number","nodeType":"YulLiteral","src":"866:1:1","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"859:3:1"},"nodeType":"YulFunctionCall","src":"859:9:1"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"854:1:1"}]}]},"pre":{"nodeType":"YulBlock","src":"834:3:1","statements":[]},"src":"830:167:1"},{"nodeType":"YulAssignment","src":"1006:15:1","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"1016:5:1"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1006:6:1"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"75:9:1","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"86:7:1","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"98:6:1","type":""}],"src":"14:1013:1"},{"body":{"nodeType":"YulBlock","src":"1133:76:1","statements":[{"nodeType":"YulAssignment","src":"1143:26:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1155:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1166:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1151:3:1"},"nodeType":"YulFunctionCall","src":"1151:18:1"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1143:4:1"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1185:9:1"},{"name":"value0","nodeType":"YulIdentifier","src":"1196:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1178:6:1"},"nodeType":"YulFunctionCall","src":"1178:25:1"},"nodeType":"YulExpressionStatement","src":"1178:25:1"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1102:9:1","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1113:6:1","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1124:4:1","type":""}],"src":"1032:177:1"},{"body":{"nodeType":"YulBlock","src":"1258:198:1","statements":[{"nodeType":"YulAssignment","src":"1268:19:1","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1284:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1278:5:1"},"nodeType":"YulFunctionCall","src":"1278:9:1"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1268:6:1"}]},{"nodeType":"YulVariableDeclaration","src":"1296:35:1","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1318:6:1"},{"name":"size","nodeType":"YulIdentifier","src":"1326:4:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1314:3:1"},"nodeType":"YulFunctionCall","src":"1314:17:1"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1300:10:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1406:13:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"1408:7:1"},"nodeType":"YulFunctionCall","src":"1408:9:1"},"nodeType":"YulExpressionStatement","src":"1408:9:1"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1349:10:1"},{"kind":"number","nodeType":"YulLiteral","src":"1361:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1346:2:1"},"nodeType":"YulFunctionCall","src":"1346:34:1"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1385:10:1"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1397:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1382:2:1"},"nodeType":"YulFunctionCall","src":"1382:22:1"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1343:2:1"},"nodeType":"YulFunctionCall","src":"1343:62:1"},"nodeType":"YulIf","src":"1340:2:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1435:2:1","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1439:10:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:1"},"nodeType":"YulFunctionCall","src":"1428:22:1"},"nodeType":"YulExpressionStatement","src":"1428:22:1"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1238:4:1","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1247:6:1","type":""}],"src":"1214:242:1"}]},"contents":"{ +{"contracts":{"a.sol":{"A":{"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"bytecode removed","opcodes":"opcodes removed","sourceMap":"sourceMap removed"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1608:1","statements":[{"nodeType":"YulBlock","src":"6:3:1","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:927:1","statements":[{"nodeType":"YulVariableDeclaration","src":"119:12:1","value":{"kind":"number","nodeType":"YulLiteral","src":"129:2:1","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"123:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"185:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"193:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"178:6:1"},"nodeType":"YulFunctionCall","src":"178:22:1"},"nodeType":"YulExpressionStatement","src":"178:22:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"151:7:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"160:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"147:3:1"},"nodeType":"YulFunctionCall","src":"147:23:1"},{"name":"_1","nodeType":"YulIdentifier","src":"172:2:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"143:3:1"},"nodeType":"YulFunctionCall","src":"143:32:1"},"nodeType":"YulIf","src":"140:2:1"},{"nodeType":"YulVariableDeclaration","src":"211:37:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"238:9:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"225:12:1"},"nodeType":"YulFunctionCall","src":"225:23:1"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"215:6:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"257:28:1","value":{"kind":"number","nodeType":"YulLiteral","src":"267:18:1","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"261:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"312:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"321:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"329:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"314:6:1"},"nodeType":"YulFunctionCall","src":"314:22:1"},"nodeType":"YulExpressionStatement","src":"314:22:1"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:1"},{"name":"_2","nodeType":"YulIdentifier","src":"308:2:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"297:2:1"},"nodeType":"YulFunctionCall","src":"297:14:1"},"nodeType":"YulIf","src":"294:2:1"},{"nodeType":"YulVariableDeclaration","src":"347:32:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"361:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"372:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"357:3:1"},"nodeType":"YulFunctionCall","src":"357:22:1"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"351:2:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"427:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"436:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"444:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"429:6:1"},"nodeType":"YulFunctionCall","src":"429:22:1"},"nodeType":"YulExpressionStatement","src":"429:22:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"406:2:1"},{"kind":"number","nodeType":"YulLiteral","src":"410:4:1","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"402:3:1"},"nodeType":"YulFunctionCall","src":"402:13:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"417:7:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"398:3:1"},"nodeType":"YulFunctionCall","src":"398:27:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"391:6:1"},"nodeType":"YulFunctionCall","src":"391:35:1"},"nodeType":"YulIf","src":"388:2:1"},{"nodeType":"YulVariableDeclaration","src":"462:30:1","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"489:2:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"476:12:1"},"nodeType":"YulFunctionCall","src":"476:16:1"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"466:6:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"519:22:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"521:16:1"},"nodeType":"YulFunctionCall","src":"521:18:1"},"nodeType":"YulExpressionStatement","src":"521:18:1"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"507:6:1"},{"name":"_2","nodeType":"YulIdentifier","src":"515:2:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"504:2:1"},"nodeType":"YulFunctionCall","src":"504:14:1"},"nodeType":"YulIf","src":"501:2:1"},{"nodeType":"YulVariableDeclaration","src":"550:25:1","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"564:6:1"},{"name":"_1","nodeType":"YulIdentifier","src":"572:2:1"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"560:3:1"},"nodeType":"YulFunctionCall","src":"560:15:1"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"554:2:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"584:38:1","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"614:2:1"},{"name":"_1","nodeType":"YulIdentifier","src":"618:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"610:3:1"},"nodeType":"YulFunctionCall","src":"610:11:1"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"595:14:1"},"nodeType":"YulFunctionCall","src":"595:27:1"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"588:3:1","type":""}]},{"nodeType":"YulVariableDeclaration","src":"631:16:1","value":{"name":"dst","nodeType":"YulIdentifier","src":"644:3:1"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"635:5:1","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"663:3:1"},{"name":"length","nodeType":"YulIdentifier","src":"668:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"656:6:1"},"nodeType":"YulFunctionCall","src":"656:19:1"},"nodeType":"YulExpressionStatement","src":"656:19:1"},{"nodeType":"YulAssignment","src":"684:19:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"695:3:1"},{"name":"_1","nodeType":"YulIdentifier","src":"700:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"691:3:1"},"nodeType":"YulFunctionCall","src":"691:12:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"684:3:1"}]},{"nodeType":"YulVariableDeclaration","src":"712:22:1","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"727:2:1"},{"name":"_1","nodeType":"YulIdentifier","src":"731:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"723:3:1"},"nodeType":"YulFunctionCall","src":"723:11:1"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"716:3:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"780:26:1","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"789:6:1"},{"name":"value0","nodeType":"YulIdentifier","src":"797:6:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"782:6:1"},"nodeType":"YulFunctionCall","src":"782:22:1"},"nodeType":"YulExpressionStatement","src":"782:22:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"757:2:1"},{"name":"_4","nodeType":"YulIdentifier","src":"761:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"753:3:1"},"nodeType":"YulFunctionCall","src":"753:11:1"},{"name":"_1","nodeType":"YulIdentifier","src":"766:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"749:3:1"},"nodeType":"YulFunctionCall","src":"749:20:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"771:7:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"746:2:1"},"nodeType":"YulFunctionCall","src":"746:33:1"},"nodeType":"YulIf","src":"743:2:1"},{"nodeType":"YulVariableDeclaration","src":"815:15:1","value":{"name":"value0","nodeType":"YulIdentifier","src":"824:6:1"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"819:1:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"888:118:1","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"909:3:1"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"927:3:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"914:12:1"},"nodeType":"YulFunctionCall","src":"914:17:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"902:6:1"},"nodeType":"YulFunctionCall","src":"902:30:1"},"nodeType":"YulExpressionStatement","src":"902:30:1"},{"nodeType":"YulAssignment","src":"945:19:1","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"956:3:1"},{"name":"_1","nodeType":"YulIdentifier","src":"961:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"952:3:1"},"nodeType":"YulFunctionCall","src":"952:12:1"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"945:3:1"}]},{"nodeType":"YulAssignment","src":"977:19:1","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"988:3:1"},{"name":"_1","nodeType":"YulIdentifier","src":"993:2:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"984:3:1"},"nodeType":"YulFunctionCall","src":"984:12:1"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"977:3:1"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"850:1:1"},{"name":"length","nodeType":"YulIdentifier","src":"853:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"847:2:1"},"nodeType":"YulFunctionCall","src":"847:13:1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"861:18:1","statements":[{"nodeType":"YulAssignment","src":"863:14:1","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"872:1:1"},{"kind":"number","nodeType":"YulLiteral","src":"875:1:1","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"868:3:1"},"nodeType":"YulFunctionCall","src":"868:9:1"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"863:1:1"}]}]},"pre":{"nodeType":"YulBlock","src":"843:3:1","statements":[]},"src":"839:167:1"},{"nodeType":"YulAssignment","src":"1015:15:1","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"1025:5:1"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1015:6:1"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"75:9:1","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"86:7:1","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"98:6:1","type":""}],"src":"14:1022:1"},{"body":{"nodeType":"YulBlock","src":"1142:76:1","statements":[{"nodeType":"YulAssignment","src":"1152:26:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1164:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1175:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1160:3:1"},"nodeType":"YulFunctionCall","src":"1160:18:1"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1152:4:1"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1194:9:1"},{"name":"value0","nodeType":"YulIdentifier","src":"1205:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1187:6:1"},"nodeType":"YulFunctionCall","src":"1187:25:1"},"nodeType":"YulExpressionStatement","src":"1187:25:1"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1111:9:1","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1122:6:1","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1133:4:1","type":""}],"src":"1041:177:1"},{"body":{"nodeType":"YulBlock","src":"1267:207:1","statements":[{"nodeType":"YulAssignment","src":"1277:19:1","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1293:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1287:5:1"},"nodeType":"YulFunctionCall","src":"1287:9:1"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1277:6:1"}]},{"nodeType":"YulVariableDeclaration","src":"1305:35:1","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1327:6:1"},{"name":"size","nodeType":"YulIdentifier","src":"1335:4:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1323:3:1"},"nodeType":"YulFunctionCall","src":"1323:17:1"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1309:10:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1415:22:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1417:16:1"},"nodeType":"YulFunctionCall","src":"1417:18:1"},"nodeType":"YulExpressionStatement","src":"1417:18:1"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1358:10:1"},{"kind":"number","nodeType":"YulLiteral","src":"1370:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1355:2:1"},"nodeType":"YulFunctionCall","src":"1355:34:1"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1394:10:1"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1406:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1391:2:1"},"nodeType":"YulFunctionCall","src":"1391:22:1"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1352:2:1"},"nodeType":"YulFunctionCall","src":"1352:62:1"},"nodeType":"YulIf","src":"1349:2:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1453:2:1","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1457:10:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1446:6:1"},"nodeType":"YulFunctionCall","src":"1446:22:1"},"nodeType":"YulExpressionStatement","src":"1446:22:1"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1247:4:1","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1256:6:1","type":""}],"src":"1223:251:1"},{"body":{"nodeType":"YulBlock","src":"1511:95:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1528:1:1","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1535:3:1","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1540:10:1","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1531:3:1"},"nodeType":"YulFunctionCall","src":"1531:20:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1521:6:1"},"nodeType":"YulFunctionCall","src":"1521:31:1"},"nodeType":"YulExpressionStatement","src":"1521:31:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1568:1:1","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1571:4:1","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1561:6:1"},"nodeType":"YulFunctionCall","src":"1561:15:1"},"nodeType":"YulExpressionStatement","src":"1561:15:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1592:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1595:4:1","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1585:6:1"},"nodeType":"YulFunctionCall","src":"1585:15:1"},"nodeType":"YulExpressionStatement","src":"1585:15:1"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1479:127:1"}]},"contents":"{ { } function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0 { @@ -10,7 +10,7 @@ let _3 := add(headStart, offset) if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(value0, value0) } let length := calldataload(_3) - if gt(length, _2) { invalid() } + if gt(length, _2) { panic_error_0x41() } let _4 := mul(length, _1) let dst := allocateMemory(add(_4, _1)) let dst_1 := dst @@ -36,8 +36,14 @@ { memPtr := mload(64) let newFreePtr := add(memPtr, size) - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } -}","id":1,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"bytecode removed","opcodes":"opcodes removed","sourceMap":"70:74:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;83:59;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;130:7:0;;83:59::o;14:1013:1:-;;129:2;172;160:9;151:7;147:23;143:32;140:2;;;193:6;185;178:22;140:2;238:9;225:23;267:18;308:2;300:6;297:14;294:2;;;329:6;321;314:22;294:2;372:6;361:9;357:22;347:32;;417:7;410:4;406:2;402:13;398:27;388:2;;444:6;436;429:22;388:2;489;476:16;515:2;507:6;504:14;501:2;;;521:9;501:2;563;555:6;551:15;541:25;;586:27;609:2;605;601:11;586:27;:::i;:::-;647:19;;;682:12;;;;714:11;;;744;;;740:20;;737:33;-1:-1:-1;734:2:1;;;788:6;780;773:22;734:2;815:6;806:15;;830:167;844:6;841:1;838:13;830:167;;;905:17;;893:30;;866:1;859:9;;;;;943:12;;;;975;;830:167;;;-1:-1:-1;1016:5:1;109:918;-1:-1:-1;;;;;;;;109:918:1:o;1032:177::-;1178:25;;;1166:2;1151:18;;1133:76::o;1214:242::-;1284:2;1278:9;1314:17;;;1361:18;1346:34;;1382:22;;;1343:62;1340:2;;;1408:9;1340:2;1435;1428:22;1258:198;;-1:-1:-1;1258:198:1:o"}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! + function panic_error_0x41() + { + mstore(0, shl(224, 0x4e487b71)) + mstore(4, 0x41) + revert(0, 0x24) + } +}","id":1,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"bytecode removed","opcodes":"opcodes removed","sourceMap":"70:74:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;83:59;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;130:7:0;;83:59::o;14:1022:1:-;;129:2;172;160:9;151:7;147:23;143:32;140:2;;;193:6;185;178:22;140:2;238:9;225:23;267:18;308:2;300:6;297:14;294:2;;;329:6;321;314:22;294:2;372:6;361:9;357:22;347:32;;417:7;410:4;406:2;402:13;398:27;388:2;;444:6;436;429:22;388:2;489;476:16;515:2;507:6;504:14;501:2;;;521:18;;:::i;:::-;572:2;564:6;560:15;550:25;;595:27;618:2;614;610:11;595:27;:::i;:::-;656:19;;;691:12;;;;723:11;;;753;;;749:20;;746:33;-1:-1:-1;743:2:1;;;797:6;789;782:22;743:2;824:6;815:15;;839:167;853:6;850:1;847:13;839:167;;;914:17;;902:30;;875:1;868:9;;;;;952:12;;;;984;;839:167;;;-1:-1:-1;1025:5:1;109:927;-1:-1:-1;;;;;;;;109:927:1:o;1041:177::-;1187:25;;;1175:2;1160:18;;1142:76::o;1223:251::-;1293:2;1287:9;1323:17;;;1370:18;1355:34;;1391:22;;;1352:62;1349:2;;;1417:18;;:::i;:::-;1453:2;1446:22;1267:207;;-1:-1:-1;1267:207:1:o;1479:127::-;1540:10;1535:3;1531:20;1528:1;1521:31;1571:4;1568:1;1561:15;1595:4;1592:1;1585:15"}}}}},"errors":[{"component":"general","errorCode":"3420","formattedMessage":"a.sol: Warning: Source file does not specify required compiler version! ","message":"Source file does not specify required compiler version!","severity":"warning","sourceLocation":{"end":-1,"file":"a.sol","start":-1},"type":"Warning"}],"sources":{"a.sol":{"id":0}}} diff --git a/test/cmdlineTests/yul_string_format_ascii/output.json b/test/cmdlineTests/yul_string_format_ascii/output.json index b6615773f..b2024135e 100644 --- a/test/cmdlineTests/yul_string_format_ascii/output.json +++ b/test/cmdlineTests/yul_string_format_ascii/output.json @@ -71,7 +71,7 @@ object \"C_10\" { memPtr := mload(64) let newFreePtr := add(memPtr, size) // protect against overflow - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } @@ -116,8 +116,10 @@ object \"C_10\" { } - function panic_error() { - invalid() + function panic_error_0x41() { + mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) + mstore(4, 0x41) + revert(0, 0x24) } function round_up_to_mul_of_32(value) -> result { diff --git a/test/cmdlineTests/yul_string_format_ascii_bytes32/output.json b/test/cmdlineTests/yul_string_format_ascii_bytes32/output.json index 457a301ca..635e025dd 100644 --- a/test/cmdlineTests/yul_string_format_ascii_bytes32/output.json +++ b/test/cmdlineTests/yul_string_format_ascii_bytes32/output.json @@ -67,7 +67,7 @@ object \"C_10\" { memPtr := mload(64) let newFreePtr := add(memPtr, size) // protect against overflow - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } @@ -88,8 +88,10 @@ object \"C_10\" { } - function panic_error() { - invalid() + function panic_error_0x41() { + mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) + mstore(4, 0x41) + revert(0, 0x24) } function shift_right_224_unsigned(value) -> newValue { diff --git a/test/cmdlineTests/yul_string_format_ascii_bytes32_from_number/output.json b/test/cmdlineTests/yul_string_format_ascii_bytes32_from_number/output.json index 673315c3f..4332465b0 100644 --- a/test/cmdlineTests/yul_string_format_ascii_bytes32_from_number/output.json +++ b/test/cmdlineTests/yul_string_format_ascii_bytes32_from_number/output.json @@ -67,7 +67,7 @@ object \"C_10\" { memPtr := mload(64) let newFreePtr := add(memPtr, size) // protect against overflow - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } @@ -93,8 +93,10 @@ object \"C_10\" { } - function panic_error() { - invalid() + function panic_error_0x41() { + mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) + mstore(4, 0x41) + revert(0, 0x24) } function shift_left_224(value) -> newValue { diff --git a/test/cmdlineTests/yul_string_format_ascii_long/output.json b/test/cmdlineTests/yul_string_format_ascii_long/output.json index 3e5052af0..c838ed514 100644 --- a/test/cmdlineTests/yul_string_format_ascii_long/output.json +++ b/test/cmdlineTests/yul_string_format_ascii_long/output.json @@ -71,7 +71,7 @@ object \"C_10\" { memPtr := mload(64) let newFreePtr := add(memPtr, size) // protect against overflow - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } @@ -120,8 +120,10 @@ object \"C_10\" { } - function panic_error() { - invalid() + function panic_error_0x41() { + mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) + mstore(4, 0x41) + revert(0, 0x24) } function round_up_to_mul_of_32(value) -> result { diff --git a/test/cmdlineTests/yul_string_format_hex/output.json b/test/cmdlineTests/yul_string_format_hex/output.json index 9f1ac4b5e..322fcd56c 100644 --- a/test/cmdlineTests/yul_string_format_hex/output.json +++ b/test/cmdlineTests/yul_string_format_hex/output.json @@ -67,7 +67,7 @@ object \"C_10\" { memPtr := mload(64) let newFreePtr := add(memPtr, size) // protect against overflow - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() } + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } @@ -93,8 +93,10 @@ object \"C_10\" { } - function panic_error() { - invalid() + function panic_error_0x41() { + mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) + mstore(4, 0x41) + revert(0, 0x24) } function shift_left_224(value) -> newValue { diff --git a/test/libsolidity/ABIEncoderTests.cpp b/test/libsolidity/ABIEncoderTests.cpp index 6c614e75b..ad8945e55 100644 --- a/test/libsolidity/ABIEncoderTests.cpp +++ b/test/libsolidity/ABIEncoderTests.cpp @@ -119,7 +119,7 @@ BOOST_AUTO_TEST_CASE(enum_type_cleanup) compileAndRun(sourceCode); BOOST_CHECK(callContractFunction("f(uint256)", 0) == encodeArgs(0)); BOOST_CHECK(callContractFunction("f(uint256)", 1) == encodeArgs(1)); - BOOST_CHECK(callContractFunction("f(uint256)", 2) == encodeArgs()); + BOOST_CHECK(callContractFunction("f(uint256)", 2) == panicData(PanicCode::EnumConversionError)); ) } diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp index 49267e753..bc518a816 100644 --- a/test/libsolidity/SolidityEndToEndTest.cpp +++ b/test/libsolidity/SolidityEndToEndTest.cpp @@ -33,6 +33,7 @@ #include #include +#include #include #include @@ -2554,7 +2555,7 @@ BOOST_AUTO_TEST_CASE(generic_staticcall) ABI_CHECK(callContractFunction("g(address)", c_addressA), encodeArgs(true, 0x40, 0x20, 23 + 42)); ABI_CHECK(callContractFunction("h(address)", c_addressA), encodeArgs(false, 0x40, 0x00)); ABI_CHECK(callContractFunction("i(address,uint256)", c_addressA, 42), encodeArgs(true, 0x40, 0x20, 42)); - ABI_CHECK(callContractFunction("i(address,uint256)", c_addressA, 23), encodeArgs(false, 0x40, 0x00)); + ABI_CHECK(callContractFunction("i(address,uint256)", c_addressA, 23), encodeArgs(false, 0x40, 0x24) + panicData(PanicCode::Assert) + bytes(32 - 4, 0)); } } @@ -3678,8 +3679,7 @@ BOOST_AUTO_TEST_CASE(invalid_enum_logged) BOOST_REQUIRE_EQUAL(logTopic(0, 0), util::keccak256(string("Log(uint8)"))); BOOST_CHECK_EQUAL(h256(logData(0)), h256(u256(0))); - // should throw - ABI_CHECK(callContractFunction("test_log()"), encodeArgs()); + ABI_CHECK(callContractFunction("test_log()"), panicData(PanicCode::EnumConversionError)); } BOOST_AUTO_TEST_CASE(evm_exceptions_in_constructor_out_of_baund) @@ -3696,7 +3696,7 @@ BOOST_AUTO_TEST_CASE(evm_exceptions_in_constructor_out_of_baund) } } )"; - ABI_CHECK(compileAndRunWithoutCheck({{"", sourceCode}}, 0, "A"), encodeArgs()); + ABI_CHECK(compileAndRunWithoutCheck({{"", sourceCode}}, 0, "A"), panicData(PanicCode::ArrayOutOfBounds)); BOOST_CHECK(!m_transactionSuccessful); } @@ -4176,7 +4176,7 @@ BOOST_AUTO_TEST_CASE(calldata_bytes_array_bounds) ); ABI_CHECK( callContractFunction("f(bytes[],uint256)", 0x40, 2, 1, 0x20, 2, bytes{'a', 'b'} + bytes(30, 0)), - encodeArgs() + panicData(PanicCode::ArrayOutOfBounds) ); } @@ -4226,11 +4226,9 @@ BOOST_AUTO_TEST_CASE(calldata_array_two_dimensional) ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256,uint256)", 0x60, i, j, encoding), encodeArgs(data[i][j])); ABI_CHECK(callContractFunction("reenc(" + arrayType + ",uint256,uint256)", 0x60, i, j, encoding), encodeArgs(data[i][j])); } - // out of bounds access - ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256,uint256)", 0x60, i, data[i].size(), encoding), encodeArgs()); + ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256,uint256)", 0x60, i, data[i].size(), encoding), panicData(PanicCode::ArrayOutOfBounds)); } - // out of bounds access - ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256)", 0x40, data.size(), encoding), encodeArgs()); + ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256)", 0x40, data.size(), encoding), panicData(PanicCode::ArrayOutOfBounds)); } } @@ -4308,14 +4306,11 @@ BOOST_AUTO_TEST_CASE(calldata_array_dynamic_three_dimensional) ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256,uint256,uint256)", 0x80, i, j, k, encoding), encodeArgs(data[i][j][k])); ABI_CHECK(callContractFunction("reenc(" + arrayType + ",uint256,uint256,uint256)", 0x80, i, j, k, encoding), encodeArgs(data[i][j][k])); } - // out of bounds access - ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256,uint256,uint256)", 0x80, i, j, data[i][j].size(), encoding), encodeArgs()); + ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256,uint256,uint256)", 0x80, i, j, data[i][j].size(), encoding), panicData(PanicCode::ArrayOutOfBounds)); } - // out of bounds access - ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256,uint256)", 0x60, i, data[i].size(), encoding), encodeArgs()); + ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256,uint256)", 0x60, i, data[i].size(), encoding), panicData(PanicCode::ArrayOutOfBounds)); } - // out of bounds access - ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256)", 0x40, data.size(), encoding), encodeArgs()); + ABI_CHECK(callContractFunction("test(" + arrayType + ",uint256)", 0x40, data.size(), encoding), panicData(PanicCode::ArrayOutOfBounds)); } } diff --git a/test/libsolidity/SolidityExpressionCompiler.cpp b/test/libsolidity/SolidityExpressionCompiler.cpp index 3778b1489..564699f1d 100644 --- a/test/libsolidity/SolidityExpressionCompiler.cpp +++ b/test/libsolidity/SolidityExpressionCompiler.cpp @@ -327,9 +327,23 @@ BOOST_AUTO_TEST_CASE(arithmetic) )"; bytes code = compileFirstExpression(sourceCode, {}, {{"test", "f", "y"}}); + bytes panic = + bytes{uint8_t(Instruction::PUSH32)} + + fromHex("4E487B7100000000000000000000000000000000000000000000000000000000") + + bytes{ + uint8_t(Instruction::PUSH1), 0x0, + uint8_t(Instruction::MSTORE), + uint8_t(Instruction::PUSH1), 0x12, + uint8_t(Instruction::PUSH1), 0x4, + uint8_t(Instruction::MSTORE), + uint8_t(Instruction::PUSH1), 0x24, + uint8_t(Instruction::PUSH1), 0x0, + uint8_t(Instruction::REVERT) + }; + bytes expectation; if (solidity::test::CommonOptions::get().optimize) - expectation = { + expectation = bytes{ uint8_t(Instruction::PUSH1), 0x2, uint8_t(Instruction::PUSH1), 0x3, uint8_t(Instruction::PUSH1), 0x5, @@ -346,24 +360,24 @@ BOOST_AUTO_TEST_CASE(arithmetic) uint8_t(Instruction::DUP2), uint8_t(Instruction::ISZERO), uint8_t(Instruction::ISZERO), - uint8_t(Instruction::PUSH1), 0x1b, - uint8_t(Instruction::JUMPI), - uint8_t(Instruction::INVALID), + uint8_t(Instruction::PUSH1), 0x48, + uint8_t(Instruction::JUMPI) + } + panic + bytes{ uint8_t(Instruction::JUMPDEST), uint8_t(Instruction::MOD), uint8_t(Instruction::DUP2), uint8_t(Instruction::ISZERO), uint8_t(Instruction::ISZERO), - uint8_t(Instruction::PUSH1), 0x24, - uint8_t(Instruction::JUMPI), - uint8_t(Instruction::INVALID), + uint8_t(Instruction::PUSH1), 0x7e, + uint8_t(Instruction::JUMPI) + } + panic + bytes{ uint8_t(Instruction::JUMPDEST), uint8_t(Instruction::DIV), uint8_t(Instruction::PUSH1), 0x1, uint8_t(Instruction::MUL) }; else - expectation = { + expectation = bytes{ uint8_t(Instruction::PUSH1), 0x1, uint8_t(Instruction::PUSH1), 0x2, uint8_t(Instruction::PUSH1), 0x3, @@ -381,21 +395,22 @@ BOOST_AUTO_TEST_CASE(arithmetic) uint8_t(Instruction::DUP2), uint8_t(Instruction::ISZERO), uint8_t(Instruction::ISZERO), - uint8_t(Instruction::PUSH1), 0x1d, - uint8_t(Instruction::JUMPI), - uint8_t(Instruction::INVALID), + uint8_t(Instruction::PUSH1), 0x4a, + uint8_t(Instruction::JUMPI) + } + panic + bytes{ uint8_t(Instruction::JUMPDEST), uint8_t(Instruction::MOD), uint8_t(Instruction::DUP2), uint8_t(Instruction::ISZERO), uint8_t(Instruction::ISZERO), - uint8_t(Instruction::PUSH1), 0x26, - uint8_t(Instruction::JUMPI), - uint8_t(Instruction::INVALID), + uint8_t(Instruction::PUSH1), 0x80, + uint8_t(Instruction::JUMPI) + } + panic + bytes{ uint8_t(Instruction::JUMPDEST), uint8_t(Instruction::DIV), uint8_t(Instruction::MUL) }; + BOOST_CHECK_EQUAL_COLLECTIONS(code.begin(), code.end(), expectation.begin(), expectation.end()); } diff --git a/test/libsolidity/semanticTests/arithmetics/addmod_mulmod_zero.sol b/test/libsolidity/semanticTests/arithmetics/addmod_mulmod_zero.sol index c70f195ba..c91d4a25f 100644 --- a/test/libsolidity/semanticTests/arithmetics/addmod_mulmod_zero.sol +++ b/test/libsolidity/semanticTests/arithmetics/addmod_mulmod_zero.sol @@ -21,6 +21,6 @@ contract C { // ==== // compileViaYul: also // ---- -// f(uint256): 0 -> FAILURE -// g(uint256): 0 -> FAILURE +// f(uint256): 0 -> FAILURE, hex"4e487b71", 0x12 +// g(uint256): 0 -> FAILURE, hex"4e487b71", 0x12 // h() -> 2 diff --git a/test/libsolidity/semanticTests/arithmetics/check_var_init.sol b/test/libsolidity/semanticTests/arithmetics/check_var_init.sol index 243c43bb1..04b3b0e78 100644 --- a/test/libsolidity/semanticTests/arithmetics/check_var_init.sol +++ b/test/libsolidity/semanticTests/arithmetics/check_var_init.sol @@ -14,5 +14,5 @@ contract D { } } // ---- -// f() -> FAILURE +// f() -> FAILURE, hex"4e487b71", 0x11 // g(), 100 wei -> 1 diff --git a/test/libsolidity/semanticTests/arithmetics/checked_add.sol b/test/libsolidity/semanticTests/arithmetics/checked_add.sol index 21db3db74..34b9e74e7 100644 --- a/test/libsolidity/semanticTests/arithmetics/checked_add.sol +++ b/test/libsolidity/semanticTests/arithmetics/checked_add.sol @@ -10,4 +10,4 @@ contract C { // f(uint16,uint16): 65534, 0 -> 0xfffe // f(uint16,uint16): 65536, 0 -> 0x00 // f(uint16,uint16): 65535, 0 -> 0xffff -// f(uint16,uint16): 65535, 1 -> FAILURE +// f(uint16,uint16): 65535, 1 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/arithmetics/checked_called_by_unchecked.sol b/test/libsolidity/semanticTests/arithmetics/checked_called_by_unchecked.sol index c12e42550..87e33ed46 100644 --- a/test/libsolidity/semanticTests/arithmetics/checked_called_by_unchecked.sol +++ b/test/libsolidity/semanticTests/arithmetics/checked_called_by_unchecked.sol @@ -10,5 +10,5 @@ contract C { // ==== // compileViaYul: also // ---- -// f(uint16,uint16,uint16): 0xe000, 0xe500, 2 -> FAILURE +// f(uint16,uint16,uint16): 0xe000, 0xe500, 2 -> FAILURE, hex"4e487b71", 0x11 // f(uint16,uint16,uint16): 0xe000, 0x1000, 0x1000 -> 0x00 diff --git a/test/libsolidity/semanticTests/arithmetics/checked_modifier_called_by_unchecked.sol b/test/libsolidity/semanticTests/arithmetics/checked_modifier_called_by_unchecked.sol index fedea12c7..322ba77b9 100644 --- a/test/libsolidity/semanticTests/arithmetics/checked_modifier_called_by_unchecked.sol +++ b/test/libsolidity/semanticTests/arithmetics/checked_modifier_called_by_unchecked.sol @@ -12,4 +12,4 @@ contract C { // compileViaYul: also // ---- // f(uint16,uint16,uint16): 0xe000, 0xe500, 2 -> 58626 -// f(uint16,uint16,uint16): 0x1000, 0xe500, 0xe000 -> FAILURE +// f(uint16,uint16,uint16): 0x1000, 0xe500, 0xe000 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/arithmetics/divisiod_by_zero.sol b/test/libsolidity/semanticTests/arithmetics/divisiod_by_zero.sol index 0ccc0acb5..7830ae236 100644 --- a/test/libsolidity/semanticTests/arithmetics/divisiod_by_zero.sol +++ b/test/libsolidity/semanticTests/arithmetics/divisiod_by_zero.sol @@ -11,6 +11,6 @@ contract C { // compileViaYul: also // ---- // div(uint256,uint256): 7, 2 -> 3 -// div(uint256,uint256): 7, 0 -> FAILURE # throws # +// div(uint256,uint256): 7, 0 -> FAILURE, hex"4e487b71", 0x12 # throws # // mod(uint256,uint256): 7, 2 -> 1 -// mod(uint256,uint256): 7, 0 -> FAILURE # throws # +// mod(uint256,uint256): 7, 0 -> FAILURE, hex"4e487b71", 0x12 # throws # diff --git a/test/libsolidity/semanticTests/arithmetics/signed_mod.sol b/test/libsolidity/semanticTests/arithmetics/signed_mod.sol index 36487f91b..c4356b0f5 100644 --- a/test/libsolidity/semanticTests/arithmetics/signed_mod.sol +++ b/test/libsolidity/semanticTests/arithmetics/signed_mod.sol @@ -20,5 +20,5 @@ contract C { // f(int256,int256): -7, 5 -> -2 // f(int256,int256): -7, 5 -> -2 // f(int256,int256): -5, -5 -> 0 -// g(bool): true -> FAILURE +// g(bool): true -> FAILURE, hex"4e487b71", 0x11 // g(bool): false -> -57896044618658097711785492504343953926634992332820282019728792003956564819968 diff --git a/test/libsolidity/semanticTests/arithmetics/unchecked_called_by_checked.sol b/test/libsolidity/semanticTests/arithmetics/unchecked_called_by_checked.sol index 504bc23b9..895a9b17c 100644 --- a/test/libsolidity/semanticTests/arithmetics/unchecked_called_by_checked.sol +++ b/test/libsolidity/semanticTests/arithmetics/unchecked_called_by_checked.sol @@ -14,4 +14,4 @@ contract C { // ---- // f(uint16): 7 -> 0x0207 // f(uint16): 0xffff -> 511 -// f(uint16): 0xfeff -> FAILURE +// f(uint16): 0xfeff -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/arithmetics/unchecked_div_by_zero.sol b/test/libsolidity/semanticTests/arithmetics/unchecked_div_by_zero.sol index 9bf68490c..83d57ce26 100644 --- a/test/libsolidity/semanticTests/arithmetics/unchecked_div_by_zero.sol +++ b/test/libsolidity/semanticTests/arithmetics/unchecked_div_by_zero.sol @@ -17,6 +17,6 @@ contract C { // compileViaYul: also // ---- // div(uint256,uint256): 7, 2 -> 3 -// div(uint256,uint256): 7, 0 -> FAILURE # throws # +// div(uint256,uint256): 7, 0 -> FAILURE, hex"4e487b71", 0x12 # throws # // mod(uint256,uint256): 7, 2 -> 1 -// mod(uint256,uint256): 7, 0 -> FAILURE # throws # +// mod(uint256,uint256): 7, 0 -> FAILURE, hex"4e487b71", 0x12 # throws # diff --git a/test/libsolidity/semanticTests/array/array_pop_empty_exception.sol b/test/libsolidity/semanticTests/array/array_pop_empty_exception.sol index 9f436d2d2..253d688b8 100644 --- a/test/libsolidity/semanticTests/array/array_pop_empty_exception.sol +++ b/test/libsolidity/semanticTests/array/array_pop_empty_exception.sol @@ -9,4 +9,4 @@ contract c { // ==== // compileViaYul: also // ---- -// test() -> FAILURE +// test() -> FAILURE, hex"4e487b71", 0x31 diff --git a/test/libsolidity/semanticTests/array/byte_array_pop_empty_exception.sol b/test/libsolidity/semanticTests/array/byte_array_pop_empty_exception.sol index abe8c737b..15f5e28bb 100644 --- a/test/libsolidity/semanticTests/array/byte_array_pop_empty_exception.sol +++ b/test/libsolidity/semanticTests/array/byte_array_pop_empty_exception.sol @@ -12,4 +12,4 @@ contract c { // ==== // compileViaYul: also // ---- -// test() -> FAILURE +// test() -> FAILURE, hex"4e487b71", 0x31 diff --git a/test/libsolidity/semanticTests/array/calldata_slice_access.sol b/test/libsolidity/semanticTests/array/calldata_slice_access.sol index 7eb975677..a8237f8a9 100644 --- a/test/libsolidity/semanticTests/array/calldata_slice_access.sol +++ b/test/libsolidity/semanticTests/array/calldata_slice_access.sol @@ -24,23 +24,23 @@ contract C { // f(uint256[],uint256,uint256): 0x80, -1, 0, 0, 1, 42 -> FAILURE // f(uint256[],uint256,uint256): 0x80, -1, -1, 0, 1, 42 -> FAILURE // g(uint256[],uint256,uint256,uint256): 0x80, 0, 1, 0, 1, 42 -> 42, 42, 42 -// g(uint256[],uint256,uint256,uint256): 0x80, 0, 1, 1, 1, 42 -> FAILURE -// g(uint256[],uint256,uint256,uint256): 0x80, 0, 0, 0, 1, 42 -> FAILURE -// g(uint256[],uint256,uint256,uint256): 0x80, 1, 1, 0, 1, 42 -> FAILURE +// g(uint256[],uint256,uint256,uint256): 0x80, 0, 1, 1, 1, 42 -> FAILURE, hex"4e487b71", 0x32 +// g(uint256[],uint256,uint256,uint256): 0x80, 0, 0, 0, 1, 42 -> FAILURE, hex"4e487b71", 0x32 +// g(uint256[],uint256,uint256,uint256): 0x80, 1, 1, 0, 1, 42 -> FAILURE, hex"4e487b71", 0x32 // g(uint256[],uint256,uint256,uint256): 0x80, 0, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> 0x4201, 0x4201, 0x4201 // g(uint256[],uint256,uint256,uint256): 0x80, 0, 5, 4, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> 0x4205, 0x4205, 0x4205 -// g(uint256[],uint256,uint256,uint256): 0x80, 0, 5, 5, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE +// g(uint256[],uint256,uint256,uint256): 0x80, 0, 5, 5, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE, hex"4e487b71", 0x32 // g(uint256[],uint256,uint256,uint256): 0x80, 1, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> 0x4202, 0x4202, 0x4202 // g(uint256[],uint256,uint256,uint256): 0x80, 1, 5, 3, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> 0x4205, 0x4205, 0x4205 -// g(uint256[],uint256,uint256,uint256): 0x80, 1, 5, 4, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE +// g(uint256[],uint256,uint256,uint256): 0x80, 1, 5, 4, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE, hex"4e487b71", 0x32 // g(uint256[],uint256,uint256,uint256): 0x80, 4, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> 0x4205, 0x4205, 0x4205 -// g(uint256[],uint256,uint256,uint256): 0x80, 4, 5, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE -// g(uint256[],uint256,uint256,uint256): 0x80, 5, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE +// g(uint256[],uint256,uint256,uint256): 0x80, 4, 5, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE, hex"4e487b71", 0x32 +// g(uint256[],uint256,uint256,uint256): 0x80, 5, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE, hex"4e487b71", 0x32 // g(uint256[],uint256,uint256,uint256): 0x80, 0, 1, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> 0x4201, 0x4201, 0x4201 -// g(uint256[],uint256,uint256,uint256): 0x80, 0, 1, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE +// g(uint256[],uint256,uint256,uint256): 0x80, 0, 1, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE, hex"4e487b71", 0x32 // g(uint256[],uint256,uint256,uint256): 0x80, 0, 1, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> 0x4201, 0x4201, 0x4201 -// g(uint256[],uint256,uint256,uint256): 0x80, 0, 1, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE +// g(uint256[],uint256,uint256,uint256): 0x80, 0, 1, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE, hex"4e487b71", 0x32 // g(uint256[],uint256,uint256,uint256): 0x80, 1, 2, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> 0x4202, 0x4202, 0x4202 -// g(uint256[],uint256,uint256,uint256): 0x80, 1, 2, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE +// g(uint256[],uint256,uint256,uint256): 0x80, 1, 2, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE, hex"4e487b71", 0x32 // g(uint256[],uint256,uint256,uint256): 0x80, 4, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> 0x4205, 0x4205, 0x4205 -// g(uint256[],uint256,uint256,uint256): 0x80, 4, 5, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE +// g(uint256[],uint256,uint256,uint256): 0x80, 4, 5, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205 -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/array/copying/copy_internal_function_array_to_storage.sol b/test/libsolidity/semanticTests/array/copying/copy_internal_function_array_to_storage.sol index 076cbbf69..7b3817946 100644 --- a/test/libsolidity/semanticTests/array/copying/copy_internal_function_array_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/copy_internal_function_array_to_storage.sol @@ -19,4 +19,4 @@ contract C { // ---- // one() -> 3 -// two() -> FAILURE +// two() -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/array/create_memory_array_too_large.sol b/test/libsolidity/semanticTests/array/create_memory_array_too_large.sol index 541a037a2..3cda961f6 100644 --- a/test/libsolidity/semanticTests/array/create_memory_array_too_large.sol +++ b/test/libsolidity/semanticTests/array/create_memory_array_too_large.sol @@ -22,5 +22,5 @@ contract C { // ==== // compileViaYul: also // ---- -// f() -> FAILURE -// g() -> FAILURE +// f() -> FAILURE, hex"4e487b71", 0x41 +// g() -> FAILURE, hex"4e487b71", 0x41 diff --git a/test/libsolidity/semanticTests/array/dynamic_out_of_bounds_array_access.sol b/test/libsolidity/semanticTests/array/dynamic_out_of_bounds_array_access.sol index b2c6893a5..e060ae2d9 100644 --- a/test/libsolidity/semanticTests/array/dynamic_out_of_bounds_array_access.sol +++ b/test/libsolidity/semanticTests/array/dynamic_out_of_bounds_array_access.sol @@ -24,11 +24,11 @@ contract c { // compileViaYul: also // ---- // length() -> 0 -// get(uint256): 3 -> FAILURE +// get(uint256): 3 -> FAILURE, hex"4e487b71", 0x32 // enlarge(uint256): 4 -> 4 // length() -> 4 // set(uint256,uint256): 3, 4 -> true // get(uint256): 3 -> 4 // length() -> 4 -// set(uint256,uint256): 4, 8 -> FAILURE +// set(uint256,uint256): 4, 8 -> FAILURE, hex"4e487b71", 0x32 // length() -> 4 diff --git a/test/libsolidity/semanticTests/array/evm_exceptions_out_of_band_access.sol b/test/libsolidity/semanticTests/array/evm_exceptions_out_of_band_access.sol index 2ac334c17..02d56710b 100644 --- a/test/libsolidity/semanticTests/array/evm_exceptions_out_of_band_access.sol +++ b/test/libsolidity/semanticTests/array/evm_exceptions_out_of_band_access.sol @@ -16,5 +16,5 @@ contract A { // compileViaYul: also // ---- // test() -> false -// testIt() -> FAILURE +// testIt() -> FAILURE, hex"4e487b71", 0x32 // test() -> false diff --git a/test/libsolidity/semanticTests/array/fixed_out_of_bounds_array_access.sol b/test/libsolidity/semanticTests/array/fixed_out_of_bounds_array_access.sol index 06246cdc6..251c8dde9 100644 --- a/test/libsolidity/semanticTests/array/fixed_out_of_bounds_array_access.sol +++ b/test/libsolidity/semanticTests/array/fixed_out_of_bounds_array_access.sol @@ -20,9 +20,9 @@ contract c { // ---- // length() -> 4 // set(uint256,uint256): 3, 4 -> true -// set(uint256,uint256): 4, 5 -> FAILURE -// set(uint256,uint256): 400, 5 -> FAILURE +// set(uint256,uint256): 4, 5 -> FAILURE, hex"4e487b71", 0x32 +// set(uint256,uint256): 400, 5 -> FAILURE, hex"4e487b71", 0x32 // get(uint256): 3 -> 4 -// get(uint256): 4 -> FAILURE -// get(uint256): 400 -> FAILURE +// get(uint256): 4 -> FAILURE, hex"4e487b71", 0x32 +// get(uint256): 400 -> FAILURE, hex"4e487b71", 0x32 // length() -> 4 diff --git a/test/libsolidity/semanticTests/array/function_memory_array.sol b/test/libsolidity/semanticTests/array/function_memory_array.sol index 9ff4cad33..9e265d2f0 100644 --- a/test/libsolidity/semanticTests/array/function_memory_array.sol +++ b/test/libsolidity/semanticTests/array/function_memory_array.sol @@ -38,4 +38,4 @@ contract C { // test(uint256,uint256): 10, 2 -> 13 // test(uint256,uint256): 10, 3 -> 15 // test(uint256,uint256): 10, 4 -> 18 -// test(uint256,uint256): 10, 5 -> FAILURE +// test(uint256,uint256): 10, 5 -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/enums/enum_explicit_overflow.sol b/test/libsolidity/semanticTests/enums/enum_explicit_overflow.sol index 9d5492d1e..20fb098f7 100644 --- a/test/libsolidity/semanticTests/enums/enum_explicit_overflow.sol +++ b/test/libsolidity/semanticTests/enums/enum_explicit_overflow.sol @@ -23,9 +23,10 @@ contract test { // ==== // compileViaYul: also +// EVMVersion: >=byzantium // ---- -// getChoiceExp(uint256): 3 -> FAILURE # These should throw # -// getChoiceFromSigned(int256): -1 -> FAILURE -// getChoiceFromNegativeLiteral() -> FAILURE +// getChoiceExp(uint256): 3 -> FAILURE, hex"4e487b71", 33 # These should throw # +// getChoiceFromSigned(int256): -1 -> FAILURE, hex"4e487b71", 33 +// getChoiceFromNegativeLiteral() -> FAILURE, hex"4e487b71", 33 // getChoiceExp(uint256): 2 -> 2 # These should work # // getChoiceExp(uint256): 0 -> 0 diff --git a/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function.sol b/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function.sol index c074d8598..fe4d27919 100644 --- a/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function.sol +++ b/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function.sol @@ -14,5 +14,5 @@ contract C { // ==== // compileViaYul: also // ---- -// intern() -> FAILURE # This should throw exceptions # +// intern() -> FAILURE, hex"4e487b71", 0x51 # This should throw exceptions # // extern() -> FAILURE diff --git a/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function_in_detail.sol b/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function_in_detail.sol index 0ae431b24..fd8a377ab 100644 --- a/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function_in_detail.sol +++ b/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function_in_detail.sol @@ -17,4 +17,4 @@ contract C { } // ---- -// t() -> FAILURE +// t() -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function_through_array.sol b/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function_through_array.sol index 44af5be40..02a32306e 100644 --- a/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function_through_array.sol +++ b/test/libsolidity/semanticTests/functionCall/calling_uninitialized_function_through_array.sol @@ -18,4 +18,4 @@ contract C { // ==== // compileViaYul: also // ---- -// t() -> FAILURE +// t() -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/functionCall/delegatecall_return_value.sol b/test/libsolidity/semanticTests/functionCall/delegatecall_return_value.sol index 0a80a9f5c..9fa72aeaa 100644 --- a/test/libsolidity/semanticTests/functionCall/delegatecall_return_value.sol +++ b/test/libsolidity/semanticTests/functionCall/delegatecall_return_value.sol @@ -22,17 +22,17 @@ contract C { } } // ==== -// compileViaYul: also // EVMVersion: >=byzantium +// compileViaYul: also // ---- // get() -> 0x00 // assert0_delegated() -> 0x01, 0x40, 0x0 // get_delegated() -> 0x01, 0x40, 0x20, 0x0 // set(uint256): 0x01 -> // get() -> 0x01 -// assert0_delegated() -> 0x00, 0x40, 0x0 +// assert0_delegated() -> 0x00, 0x40, 0x24, 0x4e487b7100000000000000000000000000000000000000000000000000000000, 0x0100000000000000000000000000000000000000000000000000000000 // get_delegated() -> 0x01, 0x40, 0x20, 0x1 // set(uint256): 0x2a -> // get() -> 0x2a -// assert0_delegated() -> 0x00, 0x40, 0x0 +// assert0_delegated() -> 0x00, 0x40, 0x24, 0x4e487b7100000000000000000000000000000000000000000000000000000000, 0x0100000000000000000000000000000000000000000000000000000000 // get_delegated() -> 0x01, 0x40, 0x20, 0x2a diff --git a/test/libsolidity/semanticTests/functionCall/transaction_status.sol b/test/libsolidity/semanticTests/functionCall/transaction_status.sol index 449ebacbe..b020b7641 100644 --- a/test/libsolidity/semanticTests/functionCall/transaction_status.sol +++ b/test/libsolidity/semanticTests/functionCall/transaction_status.sol @@ -8,4 +8,4 @@ contract test { // ---- // f() -> // g() -> FAILURE -// h() -> FAILURE +// h() -> FAILURE, hex"4e487b71", 0x01 diff --git a/test/libsolidity/semanticTests/functionTypes/function_delete_stack.sol b/test/libsolidity/semanticTests/functionTypes/function_delete_stack.sol index 96a66fce2..72ed35381 100644 --- a/test/libsolidity/semanticTests/functionTypes/function_delete_stack.sol +++ b/test/libsolidity/semanticTests/functionTypes/function_delete_stack.sol @@ -13,4 +13,4 @@ contract C { // ==== // compileViaYul: also // ---- -// test() -> FAILURE +// test() -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/functionTypes/function_delete_storage.sol b/test/libsolidity/semanticTests/functionTypes/function_delete_storage.sol index 6c7ecf4f6..49455918b 100644 --- a/test/libsolidity/semanticTests/functionTypes/function_delete_storage.sol +++ b/test/libsolidity/semanticTests/functionTypes/function_delete_storage.sol @@ -24,4 +24,4 @@ contract C { // set() -> 7 // ca() -> 7 // d() -> 1 -// ca() -> FAILURE +// ca() -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/functionTypes/uninitialized_internal_storage_function_call.sol b/test/libsolidity/semanticTests/functionTypes/uninitialized_internal_storage_function_call.sol index ca1055fd6..85c2519dc 100644 --- a/test/libsolidity/semanticTests/functionTypes/uninitialized_internal_storage_function_call.sol +++ b/test/libsolidity/semanticTests/functionTypes/uninitialized_internal_storage_function_call.sol @@ -8,4 +8,4 @@ contract Test { } // ---- -// f() -> FAILURE +// f() -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/intheritance/base_access_to_function_type_variables.sol b/test/libsolidity/semanticTests/intheritance/base_access_to_function_type_variables.sol index 753e9bd1e..5f56f78ed 100644 --- a/test/libsolidity/semanticTests/intheritance/base_access_to_function_type_variables.sol +++ b/test/libsolidity/semanticTests/intheritance/base_access_to_function_type_variables.sol @@ -16,6 +16,6 @@ contract C { // ---- // g() -> 2 -// h() -> FAILURE +// h() -> FAILURE, hex"4e487b71", 0x51 // set() -> // h() -> 2 diff --git a/test/libsolidity/semanticTests/libraries/library_address.sol b/test/libsolidity/semanticTests/libraries/library_address.sol index 3854a39bf..6ca064445 100644 --- a/test/libsolidity/semanticTests/libraries/library_address.sol +++ b/test/libsolidity/semanticTests/libraries/library_address.sol @@ -51,6 +51,6 @@ contract C { // j(uint256): 1 -> 1 // j(uint256): 2 -> 4 // j(uint256): 4 -> 16 -// k(uint256): 1 -> FAILURE -// k(uint256): 2 -> FAILURE -// k(uint256): 4 -> FAILURE +// k(uint256): 1 -> FAILURE, hex"4e487b71", 0x01 +// k(uint256): 2 -> FAILURE, hex"4e487b71", 0x01 +// k(uint256): 4 -> FAILURE, hex"4e487b71", 0x01 diff --git a/test/libsolidity/semanticTests/reverts/assert_require.sol b/test/libsolidity/semanticTests/reverts/assert_require.sol index 6bd146a7a..79f4b0478 100644 --- a/test/libsolidity/semanticTests/reverts/assert_require.sol +++ b/test/libsolidity/semanticTests/reverts/assert_require.sol @@ -17,8 +17,8 @@ contract C { // ==== // compileViaYul: also // ---- -// f() -> FAILURE -// g(bool): false -> FAILURE +// f() -> FAILURE, hex"4e487b71", 0x01 +// g(bool): false -> FAILURE, hex"4e487b71", 0x01 // g(bool): true -> true // h(bool): false -> FAILURE // h(bool): true -> true diff --git a/test/libsolidity/semanticTests/reverts/invalid_enum_as_external_arg.sol b/test/libsolidity/semanticTests/reverts/invalid_enum_as_external_arg.sol index 1d240813a..e393d81e2 100644 --- a/test/libsolidity/semanticTests/reverts/invalid_enum_as_external_arg.sol +++ b/test/libsolidity/semanticTests/reverts/invalid_enum_as_external_arg.sol @@ -16,6 +16,7 @@ contract C { } } // ==== +// EVMVersion: >=byzantium // compileViaYul: also // ---- -// test() -> FAILURE # should throw # +// test() -> FAILURE, hex"4e487b71", 33 # should throw # diff --git a/test/libsolidity/semanticTests/reverts/invalid_enum_as_external_ret.sol b/test/libsolidity/semanticTests/reverts/invalid_enum_as_external_ret.sol index 6bdf14298..1ba224c79 100644 --- a/test/libsolidity/semanticTests/reverts/invalid_enum_as_external_ret.sol +++ b/test/libsolidity/semanticTests/reverts/invalid_enum_as_external_ret.sol @@ -26,7 +26,8 @@ contract C { // ==== // compileViaYul: also +// EVMVersion: >=byzantium // ---- -// test_return() -> FAILURE # both should throw # -// test_inline_assignment() -> FAILURE -// test_assignment() -> FAILURE +// test_return() -> FAILURE, hex"4e487b71", 33 # both should throw # +// test_inline_assignment() -> FAILURE, hex"4e487b71", 33 +// test_assignment() -> FAILURE, hex"4e487b71", 33 diff --git a/test/libsolidity/semanticTests/reverts/invalid_enum_compared.sol b/test/libsolidity/semanticTests/reverts/invalid_enum_compared.sol index 3c082a363..f943f8eee 100644 --- a/test/libsolidity/semanticTests/reverts/invalid_enum_compared.sol +++ b/test/libsolidity/semanticTests/reverts/invalid_enum_compared.sol @@ -24,7 +24,8 @@ contract C { } // ==== // compileViaYul: also +// EVMVersion: >=byzantium // ---- // test_eq_ok() -> 1 -// test_eq() -> FAILURE # both should throw # -// test_neq() -> FAILURE +// test_eq() -> FAILURE, hex"4e487b71", 33 # both should throw # +// test_neq() -> FAILURE, hex"4e487b71", 33 diff --git a/test/libsolidity/semanticTests/reverts/invalid_enum_stored.sol b/test/libsolidity/semanticTests/reverts/invalid_enum_stored.sol index 2b90451ec..8049a977e 100644 --- a/test/libsolidity/semanticTests/reverts/invalid_enum_stored.sol +++ b/test/libsolidity/semanticTests/reverts/invalid_enum_stored.sol @@ -16,8 +16,9 @@ contract C { return 1; } } - +// ==== +// EVMVersion: >=byzantium // ---- // test_store_ok() -> 1 // x() -> 0 -// test_store() -> FAILURE # should throw # +// test_store() -> FAILURE, hex"4e487b71", 33 # should throw # diff --git a/test/libsolidity/semanticTests/smoke/failure.sol b/test/libsolidity/semanticTests/smoke/failure.sol index 95b8c9109..ed7c4d332 100644 --- a/test/libsolidity/semanticTests/smoke/failure.sol +++ b/test/libsolidity/semanticTests/smoke/failure.sol @@ -14,12 +14,12 @@ contract C { } } // ==== -// compileViaYul: also // EVMVersion: >homestead // allowNonExistingFunctions: true +// compileViaYul: also // ---- // _() -> FAILURE -// e() -> FAILURE, hex"08c379a0", 0x20, 19, "Transaction failed." -// f(bool): false -> FAILURE, hex"08c379a0", 0x20, 0 -// g(bool): false -> FAILURE, hex"08c379a0", 0x20, 15, "Value is false." -// h() -> FAILURE +// e() -> FAILURE, hex"08c379a0", 0x20, 0x13, "Transaction failed." +// f(bool): false -> FAILURE, hex"08c379a0", 0x20, 0x00 +// g(bool): false -> FAILURE, hex"08c379a0", 0x20, 0x0f, "Value is false." +// h() -> FAILURE, hex"4e487b71", 0x01 diff --git a/test/libsolidity/semanticTests/types/mapping_enum_key.sol b/test/libsolidity/semanticTests/types/mapping_enum_key.sol index befc46a87..50dde5f5b 100644 --- a/test/libsolidity/semanticTests/types/mapping_enum_key.sol +++ b/test/libsolidity/semanticTests/types/mapping_enum_key.sol @@ -9,22 +9,24 @@ contract test { } } // ==== -// compileViaYul: also +// EVMVersion: >=byzantium +// ABIEncoderV1Only: true +// compileViaYul: false // ---- // get(uint8): 0 -> 0 // get(uint8): 0x01 -> 0 // get(uint8): 0x02 -> 0 -// get(uint8): 0x03 -> FAILURE -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0x03 -> FAILURE, hex"4e487b71", 33 +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 // set(uint8,uint8): 0x01, 0xa1 -> // get(uint8): 0 -> 0 // get(uint8): 0x01 -> 0xa1 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 // set(uint8,uint8): 0x00, 0xef -> // get(uint8): 0 -> 0xef // get(uint8): 0x01 -> 0xa1 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 // set(uint8,uint8): 0x01, 0x05 -> // get(uint8): 0 -> 0xef // get(uint8): 0x01 -> 0x05 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 diff --git a/test/libsolidity/semanticTests/types/mapping_enum_key_getter.sol b/test/libsolidity/semanticTests/types/mapping_enum_key_getter.sol index 9b1b23b83..1796b9cdc 100644 --- a/test/libsolidity/semanticTests/types/mapping_enum_key_getter.sol +++ b/test/libsolidity/semanticTests/types/mapping_enum_key_getter.sol @@ -10,31 +10,32 @@ contract test { } // ==== // ABIEncoderV1Only: true +// EVMVersion: >=byzantium // ---- // table(uint8): 0 -> 0 // table(uint8): 0x01 -> 0 // table(uint8): 0xa7 -> 0 // get(uint8): 0 -> 0 // get(uint8): 0x01 -> 0 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 // set(uint8,uint8): 0x01, 0xa1 -> // table(uint8): 0 -> 0 // table(uint8): 0x01 -> 0xa1 // table(uint8): 0xa7 -> 0 // get(uint8): 0 -> 0 // get(uint8): 0x01 -> 0xa1 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 // set(uint8,uint8): 0x00, 0xef -> // table(uint8): 0 -> 0xef // table(uint8): 0x01 -> 0xa1 // table(uint8): 0xa7 -> 0 // get(uint8): 0 -> 0xef // get(uint8): 0x01 -> 0xa1 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 // set(uint8,uint8): 0x01, 0x05 -> // table(uint8): 0 -> 0xef // table(uint8): 0x01 -> 0x05 // table(uint8): 0xa7 -> 0 // get(uint8): 0 -> 0xef // get(uint8): 0x01 -> 0x05 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 diff --git a/test/libsolidity/semanticTests/types/mapping_enum_key_library.sol b/test/libsolidity/semanticTests/types/mapping_enum_key_library.sol index d1484238d..7b638d122 100644 --- a/test/libsolidity/semanticTests/types/mapping_enum_key_library.sol +++ b/test/libsolidity/semanticTests/types/mapping_enum_key_library.sol @@ -16,20 +16,23 @@ contract test { L.set(table, k, v); } } +// ==== +// EVMVersion: >=byzantium +// ABIEncoderV1Only: true // ---- // library: L // get(uint8): 0 -> 0 // get(uint8): 0x01 -> 0 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 // set(uint8,uint8): 0x01, 0xa1 -> // get(uint8): 0 -> 0 // get(uint8): 0x01 -> 0xa1 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 // set(uint8,uint8): 0x00, 0xef -> // get(uint8): 0 -> 0xef // get(uint8): 0x01 -> 0xa1 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 // set(uint8,uint8): 0x01, 0x05 -> // get(uint8): 0 -> 0xef // get(uint8): 0x01 -> 0x05 -// get(uint8): 0xa7 -> FAILURE +// get(uint8): 0xa7 -> FAILURE, hex"4e487b71", 33 diff --git a/test/libsolidity/semanticTests/types/mapping_enum_key_library_encoderV2.sol b/test/libsolidity/semanticTests/types/mapping_enum_key_library_encoderV2.sol new file mode 100644 index 000000000..bb4fa6ad5 --- /dev/null +++ b/test/libsolidity/semanticTests/types/mapping_enum_key_library_encoderV2.sol @@ -0,0 +1,39 @@ +pragma experimental ABIEncoderV2; + +enum E { A, B, C } +library L { + function get(mapping(E => uint8) storage table, E k) external returns (uint8) { + return table[k]; + } + function set(mapping(E => uint8) storage table, E k, uint8 v) external { + table[k] = v; + } +} +contract test { + mapping(E => uint8) table; + function get(E k) public returns (uint8 v) { + return L.get(table, k); + } + function set(E k, uint8 v) public { + L.set(table, k, v); + } +} +// ==== +// EVMVersion: >=byzantium +// ---- +// library: L +// get(uint8): 0 -> 0 +// get(uint8): 0x01 -> 0 +// get(uint8): 0xa7 -> FAILURE +// set(uint8,uint8): 0x01, 0xa1 -> +// get(uint8): 0 -> 0 +// get(uint8): 0x01 -> 0xa1 +// get(uint8): 0xa7 -> FAILURE +// set(uint8,uint8): 0x00, 0xef -> +// get(uint8): 0 -> 0xef +// get(uint8): 0x01 -> 0xa1 +// get(uint8): 0xa7 -> FAILURE +// set(uint8,uint8): 0x01, 0x05 -> +// get(uint8): 0 -> 0xef +// get(uint8): 0x01 -> 0x05 +// get(uint8): 0xa7 -> FAILURE diff --git a/test/libsolidity/semanticTests/types/mapping_enum_key_v2.sol b/test/libsolidity/semanticTests/types/mapping_enum_key_v2.sol new file mode 100644 index 000000000..abf9b7163 --- /dev/null +++ b/test/libsolidity/semanticTests/types/mapping_enum_key_v2.sol @@ -0,0 +1,32 @@ +pragma experimental ABIEncoderV2; +enum E { A, B, C } +contract test { + mapping(E => uint8) table; + function get(E k) public returns (uint8 v) { + return table[k]; + } + function set(E k, uint8 v) public { + table[k] = v; + } +} +// ==== +// compileViaYul: also +// EVMVersion: >=byzantium +// ---- +// get(uint8): 0 -> 0 +// get(uint8): 0x01 -> 0 +// get(uint8): 0x02 -> 0 +// get(uint8): 0x03 -> FAILURE +// get(uint8): 0xa7 -> FAILURE +// set(uint8,uint8): 0x01, 0xa1 -> +// get(uint8): 0 -> 0 +// get(uint8): 0x01 -> 0xa1 +// get(uint8): 0xa7 -> FAILURE +// set(uint8,uint8): 0x00, 0xef -> +// get(uint8): 0 -> 0xef +// get(uint8): 0x01 -> 0xa1 +// get(uint8): 0xa7 -> FAILURE +// set(uint8,uint8): 0x01, 0x05 -> +// get(uint8): 0 -> 0xef +// get(uint8): 0x01 -> 0x05 +// get(uint8): 0xa7 -> FAILURE diff --git a/test/libsolidity/semanticTests/uninitializedFunctionPointer/invalidInConstructor.sol b/test/libsolidity/semanticTests/uninitializedFunctionPointer/invalidInConstructor.sol index 15ebeca43..e4e6453c5 100644 --- a/test/libsolidity/semanticTests/uninitializedFunctionPointer/invalidInConstructor.sol +++ b/test/libsolidity/semanticTests/uninitializedFunctionPointer/invalidInConstructor.sol @@ -20,4 +20,4 @@ contract Test { } } // ---- -// f() -> FAILURE +// f() -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/uninitializedFunctionPointer/invalidStoredInConstructor.sol b/test/libsolidity/semanticTests/uninitializedFunctionPointer/invalidStoredInConstructor.sol index 323e47f8b..fbaca1a67 100644 --- a/test/libsolidity/semanticTests/uninitializedFunctionPointer/invalidStoredInConstructor.sol +++ b/test/libsolidity/semanticTests/uninitializedFunctionPointer/invalidStoredInConstructor.sol @@ -20,4 +20,4 @@ contract Test { } } // ---- -// f() -> FAILURE +// f() -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/uninitializedFunctionPointer/store2.sol b/test/libsolidity/semanticTests/uninitializedFunctionPointer/store2.sol index f2a9259ae..1c1e596ab 100644 --- a/test/libsolidity/semanticTests/uninitializedFunctionPointer/store2.sol +++ b/test/libsolidity/semanticTests/uninitializedFunctionPointer/store2.sol @@ -36,4 +36,4 @@ contract InvalidTest { } } // ---- -// run() -> FAILURE +// run() -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/uninitializedFunctionPointer/storeInConstructor.sol b/test/libsolidity/semanticTests/uninitializedFunctionPointer/storeInConstructor.sol index df28ca1cc..08a96792c 100644 --- a/test/libsolidity/semanticTests/uninitializedFunctionPointer/storeInConstructor.sol +++ b/test/libsolidity/semanticTests/uninitializedFunctionPointer/storeInConstructor.sol @@ -15,5 +15,5 @@ contract InvalidTest { } } // ---- -// f() -> FAILURE -// f() -> FAILURE +// f() -> FAILURE, hex"4e487b71", 0x51 +// f() -> FAILURE, hex"4e487b71", 0x51 diff --git a/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_2d_zeroed_memory_index_access.sol b/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_2d_zeroed_memory_index_access.sol index aa1349cb8..45e567e1d 100644 --- a/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_2d_zeroed_memory_index_access.sol +++ b/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_2d_zeroed_memory_index_access.sol @@ -20,5 +20,5 @@ contract C { // ---- // set(string,uint256,uint256,uint256,uint256): 0xa0, 2, 4, 0, 0, 32, "01234567890123456789012345678901" -> 0 // set(string,uint256,uint256,uint256,uint256): 0xa0, 2, 4, 1, 3, 32, "01234567890123456789012345678901" -> 0 -// set(string,uint256,uint256,uint256,uint256): 0xa0, 2, 4, 3, 3, 32, "01234567890123456789012345678901" -> FAILURE -// set(string,uint256,uint256,uint256,uint256): 0xa0, 2, 4, 1, 5, 32, "01234567890123456789012345678901" -> FAILURE +// set(string,uint256,uint256,uint256,uint256): 0xa0, 2, 4, 3, 3, 32, "01234567890123456789012345678901" -> FAILURE, hex"4e487b71", 0x32 +// set(string,uint256,uint256,uint256,uint256): 0xa0, 2, 4, 1, 5, 32, "01234567890123456789012345678901" -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_array_static.sol b/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_array_static.sol index 1f490ba59..8678e1aa3 100644 --- a/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_array_static.sol +++ b/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_array_static.sol @@ -18,5 +18,5 @@ contract C { // ---- // set(string,uint256,uint256): 0x60, 2, 0, 32, "01234567890123456789012345678901" -> 0 // set(string,uint256,uint256): 0x60, 2, 1, 32, "01234567890123456789012345678901" -> 0 -// set(string,uint256,uint256): 0x60, 2, 2, 32, "01234567890123456789012345678901" -> FAILURE +// set(string,uint256,uint256): 0x60, 2, 2, 32, "01234567890123456789012345678901" -> FAILURE, hex"4e487b71", 0x32 // set(string,uint256,uint256): 0x60, 200, 199, 32, "01234567890123456789012345678901" -> 0 diff --git a/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_zeroed_memory_index_access.sol b/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_zeroed_memory_index_access.sol index 1f9e70db7..76a412adf 100644 --- a/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_zeroed_memory_index_access.sol +++ b/test/libsolidity/semanticTests/viaYul/array_memory_allocation/array_zeroed_memory_index_access.sol @@ -19,4 +19,4 @@ contract C { // set(string,uint256,uint256): 0x60, 5, 0, 32, "01234567890123456789012345678901" -> 0 // set(string,uint256,uint256): 0x60, 5, 1, 32, "01234567890123456789012345678901" -> 0 // set(string,uint256,uint256): 0x60, 5, 4, 32, "01234567890123456789012345678901" -> 0 -// set(string,uint256,uint256): 0x60, 5, 5, 32, "01234567890123456789012345678901" -> FAILURE +// set(string,uint256,uint256): 0x60, 5, 5, 32, "01234567890123456789012345678901" -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/viaYul/array_memory_as_parameter.sol b/test/libsolidity/semanticTests/viaYul/array_memory_as_parameter.sol index eb1a60d4f..3a19b2238 100644 --- a/test/libsolidity/semanticTests/viaYul/array_memory_as_parameter.sol +++ b/test/libsolidity/semanticTests/viaYul/array_memory_as_parameter.sol @@ -20,7 +20,7 @@ contract C { // ==== // compileViaYul: true // ---- -// test(uint256,uint256): 0,0 -> FAILURE -// test(uint256,uint256): 1,0 -> 1 -// test(uint256,uint256): 10,5 -> 6 -// test(uint256,uint256): 10,50 -> FAILURE +// test(uint256,uint256): 0, 0 -> FAILURE, hex"4e487b71", 0x32 +// test(uint256,uint256): 1, 0 -> 1 +// test(uint256,uint256): 10, 5 -> 6 +// test(uint256,uint256): 10, 50 -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/viaYul/array_memory_index_access.sol b/test/libsolidity/semanticTests/viaYul/array_memory_index_access.sol index 0ec85912c..2d8566d3d 100644 --- a/test/libsolidity/semanticTests/viaYul/array_memory_index_access.sol +++ b/test/libsolidity/semanticTests/viaYul/array_memory_index_access.sol @@ -28,8 +28,8 @@ contract C { // index(uint256): 10 -> true // index(uint256): 20 -> true // index(uint256): 0xFF -> true -// accessIndex(uint256,int256): 10,1 -> 2 -// accessIndex(uint256,int256): 10,0 -> 1 -// accessIndex(uint256,int256): 10,11 -> FAILURE -// accessIndex(uint256,int256): 10,10 -> FAILURE -// accessIndex(uint256,int256): 10,-1 -> FAILURE +// accessIndex(uint256,int256): 10, 1 -> 2 +// accessIndex(uint256,int256): 10, 0 -> 1 +// accessIndex(uint256,int256): 10, 11 -> FAILURE, hex"4e487b71", 0x32 +// accessIndex(uint256,int256): 10, 10 -> FAILURE, hex"4e487b71", 0x32 +// accessIndex(uint256,int256): 10, -1 -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/viaYul/array_push_return_reference.sol b/test/libsolidity/semanticTests/viaYul/array_push_return_reference.sol index ea52cd1db..d83fd53ef 100644 --- a/test/libsolidity/semanticTests/viaYul/array_push_return_reference.sol +++ b/test/libsolidity/semanticTests/viaYul/array_push_return_reference.sol @@ -17,9 +17,9 @@ contract C { // test(uint256): 42 -> // getLength() -> 1 // fetch(uint256): 0 -> 42 -// fetch(uint256): 1 -> FAILURE +// fetch(uint256): 1 -> FAILURE, hex"4e487b71", 0x32 // test(uint256): 23 -> // getLength() -> 2 // fetch(uint256): 0 -> 42 // fetch(uint256): 1 -> 23 -// fetch(uint256): 2 -> FAILURE \ No newline at end of file +// fetch(uint256): 2 -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/viaYul/array_push_with_arg.sol b/test/libsolidity/semanticTests/viaYul/array_push_with_arg.sol index e24aa3d3d..a93778b3f 100644 --- a/test/libsolidity/semanticTests/viaYul/array_push_with_arg.sol +++ b/test/libsolidity/semanticTests/viaYul/array_push_with_arg.sol @@ -17,9 +17,9 @@ contract C { // test(uint256): 42 -> // getLength() -> 1 // fetch(uint256): 0 -> 42 -// fetch(uint256): 1 -> FAILURE +// fetch(uint256): 1 -> FAILURE, hex"4e487b71", 0x32 // test(uint256): 23 -> // getLength() -> 2 // fetch(uint256): 0 -> 42 // fetch(uint256): 1 -> 23 -// fetch(uint256): 2 -> FAILURE \ No newline at end of file +// fetch(uint256): 2 -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/viaYul/array_storage_index_boundary_test.sol b/test/libsolidity/semanticTests/viaYul/array_storage_index_boundary_test.sol index 5fe4a381d..529ac67bb 100644 --- a/test/libsolidity/semanticTests/viaYul/array_storage_index_boundary_test.sol +++ b/test/libsolidity/semanticTests/viaYul/array_storage_index_boundary_test.sol @@ -12,12 +12,12 @@ contract C { // ==== // compileViaYul: true // ---- -// test_boundary_check(uint256, uint256): 10, 11 -> FAILURE -// test_boundary_check(uint256, uint256): 10, 9 -> 0 -// test_boundary_check(uint256, uint256): 1, 9 -> FAILURE -// test_boundary_check(uint256, uint256): 1, 1 -> FAILURE -// test_boundary_check(uint256, uint256): 10, 10 -> FAILURE -// test_boundary_check(uint256, uint256): 256, 256 -> FAILURE -// test_boundary_check(uint256, uint256): 256, 255 -> 0 -// test_boundary_check(uint256, uint256): 256, 0xFFFF -> FAILURE -// test_boundary_check(uint256, uint256): 256, 2 -> 0 +// test_boundary_check(uint256,uint256): 10, 11 -> FAILURE, hex"4e487b71", 0x32 +// test_boundary_check(uint256,uint256): 10, 9 -> 0 +// test_boundary_check(uint256,uint256): 1, 9 -> FAILURE, hex"4e487b71", 0x32 +// test_boundary_check(uint256,uint256): 1, 1 -> FAILURE, hex"4e487b71", 0x32 +// test_boundary_check(uint256,uint256): 10, 10 -> FAILURE, hex"4e487b71", 0x32 +// test_boundary_check(uint256,uint256): 256, 256 -> FAILURE, hex"4e487b71", 0x32 +// test_boundary_check(uint256,uint256): 256, 255 -> 0 +// test_boundary_check(uint256,uint256): 256, 0xFFFF -> FAILURE, hex"4e487b71", 0x32 +// test_boundary_check(uint256,uint256): 256, 2 -> 0 diff --git a/test/libsolidity/semanticTests/viaYul/array_storage_pop_zero_length.sol b/test/libsolidity/semanticTests/viaYul/array_storage_pop_zero_length.sol index 932a4d642..e5e26ee36 100644 --- a/test/libsolidity/semanticTests/viaYul/array_storage_pop_zero_length.sol +++ b/test/libsolidity/semanticTests/viaYul/array_storage_pop_zero_length.sol @@ -8,4 +8,4 @@ contract C { // EVMVersion: >=petersburg // compileViaYul: true // ---- -// popEmpty() -> FAILURE +// popEmpty() -> FAILURE, hex"4e487b71", 0x31 diff --git a/test/libsolidity/semanticTests/viaYul/assert.sol b/test/libsolidity/semanticTests/viaYul/assert.sol index 6b1be606e..e74d46167 100644 --- a/test/libsolidity/semanticTests/viaYul/assert.sol +++ b/test/libsolidity/semanticTests/viaYul/assert.sol @@ -17,6 +17,6 @@ contract C { // compileViaYul: true // ---- // f(bool): true -> true -// f(bool): false -> FAILURE -// fail() -> FAILURE +// f(bool): false -> FAILURE, hex"4e487b71", 0x01 +// fail() -> FAILURE, hex"4e487b71", 0x01 // succeed() -> true diff --git a/test/libsolidity/semanticTests/viaYul/assert_and_require.sol b/test/libsolidity/semanticTests/viaYul/assert_and_require.sol index 4140653e8..483b3080b 100644 --- a/test/libsolidity/semanticTests/viaYul/assert_and_require.sol +++ b/test/libsolidity/semanticTests/viaYul/assert_and_require.sol @@ -14,6 +14,6 @@ contract C { // compileViaYul: true // ---- // f(bool): true -> true -// f(bool): false -> FAILURE +// f(bool): false -> FAILURE, hex"4e487b71", 0x01 // f2(bool): true -> true // f2(bool): false -> FAILURE diff --git a/test/libsolidity/semanticTests/viaYul/calldata_array_access.sol b/test/libsolidity/semanticTests/viaYul/calldata_array_access.sol index 115015f03..9ce8b142a 100644 --- a/test/libsolidity/semanticTests/viaYul/calldata_array_access.sol +++ b/test/libsolidity/semanticTests/viaYul/calldata_array_access.sol @@ -10,11 +10,11 @@ contract C { // ==== // compileViaYul: also // ---- -// f(uint256[],uint256): 0x40, 0, 0 -> FAILURE +// f(uint256[],uint256): 0x40, 0, 0 -> FAILURE, hex"4e487b71", 0x32 // f(uint256[],uint256): 0x40, 0, 1, 23 -> 23 -// f(uint256[],uint256): 0x40, 1, 1, 23 -> FAILURE +// f(uint256[],uint256): 0x40, 1, 1, 23 -> FAILURE, hex"4e487b71", 0x32 // f(uint256[],uint256): 0x40, 0, 2, 23, 42 -> 23 // f(uint256[],uint256): 0x40, 1, 2, 23, 42 -> 42 -// f(uint256[],uint256): 0x40, 2, 2, 23, 42 -> FAILURE +// f(uint256[],uint256): 0x40, 2, 2, 23, 42 -> FAILURE, hex"4e487b71", 0x32 // f(uint256[][],uint256,uint256): 0x60, 0, 0 -> FAILURE // f(uint256[][],uint256,uint256): 0x60, 0, 0, 1, 0x20, 1, 23 -> 23 diff --git a/test/libsolidity/semanticTests/viaYul/calldata_array_index_range_access.sol b/test/libsolidity/semanticTests/viaYul/calldata_array_index_range_access.sol index d0e4ee595..24d353889 100644 --- a/test/libsolidity/semanticTests/viaYul/calldata_array_index_range_access.sol +++ b/test/libsolidity/semanticTests/viaYul/calldata_array_index_range_access.sol @@ -40,6 +40,6 @@ contract C { // f_e_only(uint256[],uint256): 0x40, 3, 5, 1, 2, 3, 4, 5 -> 3 // f_e_only(uint256[],uint256): 0x40, 6, 5, 1, 2, 3, 4, 5 -> FAILURE // g(uint256[],uint256,uint256,uint256): 0x80, 2, 4, 1, 5, 1, 2, 3, 4, 5 -> 4 -// g(uint256[],uint256,uint256,uint256): 0x80, 2, 4, 3, 5, 1, 2, 3, 4, 5 -> FAILURE +// g(uint256[],uint256,uint256,uint256): 0x80, 2, 4, 3, 5, 1, 2, 3, 4, 5 -> FAILURE, hex"4e487b71", 0x32 // gg(uint256[],uint256,uint256,uint256): 0x80, 2, 4, 1, 5, 1, 2, 3, 4, 5 -> 4 -// gg(uint256[],uint256,uint256,uint256): 0x80, 2, 4, 3, 5, 1, 2, 3, 4, 5 -> FAILURE +// gg(uint256[],uint256,uint256,uint256): 0x80, 2, 4, 3, 5, 1, 2, 3, 4, 5 -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/viaYul/calldata_array_three_dimensional.sol b/test/libsolidity/semanticTests/viaYul/calldata_array_three_dimensional.sol index 6742b995a..6d623e902 100644 --- a/test/libsolidity/semanticTests/viaYul/calldata_array_three_dimensional.sol +++ b/test/libsolidity/semanticTests/viaYul/calldata_array_three_dimensional.sol @@ -15,6 +15,6 @@ contract C { // f(uint256[][2][],uint256,uint256,uint256): 0x80, 0, 1, 0, 1, 0x20, 0x40, 0x80, 1, 42, 1, 23 -> 1, 2, 1, 23 // f(uint256[][2][],uint256,uint256,uint256): 0x80, 0, 1, 0, 1, 0x20, 0x40, 0x80, 1, 42, 2, 23, 17 -> 1, 2, 2, 23 // f(uint256[][2][],uint256,uint256,uint256): 0x80, 0, 1, 1, 1, 0x20, 0x40, 0x80, 1, 42, 2, 23, 17 -> 1, 2, 2, 17 -// f(uint256[][2][],uint256,uint256,uint256): 0x80, 1, 0, 0, 1, 0x20, 0x40, 0x80, 1, 42, 1, 23 -> FAILURE -// f(uint256[][2][],uint256,uint256,uint256): 0x80, 0, 2, 0, 1, 0x20, 0x40, 0x80, 1, 42, 1, 23 -> FAILURE -// f(uint256[][2][],uint256,uint256,uint256): 0x80, 0, 2, 0, 1, 0x20, 0x40, 0x80, 1, 42, 1, 23 -> FAILURE +// f(uint256[][2][],uint256,uint256,uint256): 0x80, 1, 0, 0, 1, 0x20, 0x40, 0x80, 1, 42, 1, 23 -> FAILURE, hex"4e487b71", 0x32 +// f(uint256[][2][],uint256,uint256,uint256): 0x80, 0, 2, 0, 1, 0x20, 0x40, 0x80, 1, 42, 1, 23 -> FAILURE, hex"4e487b71", 0x32 +// f(uint256[][2][],uint256,uint256,uint256): 0x80, 0, 2, 0, 1, 0x20, 0x40, 0x80, 1, 42, 1, 23 -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/viaYul/calldata_bytes_array_bounds.sol b/test/libsolidity/semanticTests/viaYul/calldata_bytes_array_bounds.sol index f9eebf14e..3622bab38 100644 --- a/test/libsolidity/semanticTests/viaYul/calldata_bytes_array_bounds.sol +++ b/test/libsolidity/semanticTests/viaYul/calldata_bytes_array_bounds.sol @@ -9,4 +9,4 @@ contract C { // ---- // f(bytes[],uint256): 0x40, 0, 1, 0x20, 2, hex"6162" -> 0x61 // f(bytes[],uint256): 0x40, 1, 1, 0x20, 2, hex"6162" -> 0x62 -// f(bytes[],uint256): 0x40, 2, 1, 0x20, 2, hex"6162" -> FAILURE +// f(bytes[],uint256): 0x40, 2, 1, 0x20, 2, hex"6162" -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/viaYul/cleanup/checked_arithmetic.sol b/test/libsolidity/semanticTests/viaYul/cleanup/checked_arithmetic.sol index cc9e44938..19b7cb846 100644 --- a/test/libsolidity/semanticTests/viaYul/cleanup/checked_arithmetic.sol +++ b/test/libsolidity/semanticTests/viaYul/cleanup/checked_arithmetic.sol @@ -60,6 +60,6 @@ contract C { // mod() -> 1, 0 // inc_pre() -> 1 // inc_post() -> 0 -// dec_pre() -> FAILURE -// dec_post() -> FAILURE -// neg() -> FAILURE +// dec_pre() -> FAILURE, hex"4e487b71", 0x11 +// dec_post() -> FAILURE, hex"4e487b71", 0x11 +// neg() -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/viaYul/delete.sol b/test/libsolidity/semanticTests/viaYul/delete.sol index 9d1aaf7f4..e1664d20a 100644 --- a/test/libsolidity/semanticTests/viaYul/delete.sol +++ b/test/libsolidity/semanticTests/viaYul/delete.sol @@ -21,5 +21,5 @@ contract C { // ==== // compileViaYul: true // ---- -// call_deleted_internal_func() -> FAILURE +// call_deleted_internal_func() -> FAILURE, hex"4e487b71", 0x51 // call_internal_func() -> true diff --git a/test/libsolidity/semanticTests/viaYul/detect_add_overflow.sol b/test/libsolidity/semanticTests/viaYul/detect_add_overflow.sol index 7ea2f0306..6403e5139 100644 --- a/test/libsolidity/semanticTests/viaYul/detect_add_overflow.sol +++ b/test/libsolidity/semanticTests/viaYul/detect_add_overflow.sol @@ -11,8 +11,8 @@ contract C { // ---- // f(uint256,uint256): 5, 6 -> 11 // f(uint256,uint256): -2, 1 -> -1 -// f(uint256,uint256): -2, 2 -> FAILURE -// f(uint256,uint256): 2, -2 -> FAILURE +// f(uint256,uint256): -2, 2 -> FAILURE, hex"4e487b71", 0x11 +// f(uint256,uint256): 2, -2 -> FAILURE, hex"4e487b71", 0x11 // g(uint8,uint8): 128, 64 -> 192 // g(uint8,uint8): 128, 127 -> 255 -// g(uint8,uint8): 128, 128 -> FAILURE +// g(uint8,uint8): 128, 128 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/viaYul/detect_add_overflow_signed.sol b/test/libsolidity/semanticTests/viaYul/detect_add_overflow_signed.sol index a2a90bd2a..4e4bd4518 100644 --- a/test/libsolidity/semanticTests/viaYul/detect_add_overflow_signed.sol +++ b/test/libsolidity/semanticTests/viaYul/detect_add_overflow_signed.sol @@ -16,12 +16,12 @@ contract C { // f(int256,int256): -5, -6 -> -11 // f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0, 0x0F -> 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF // f(int256,int256): 0x0F, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -> 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -// f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 1 -> FAILURE -// f(int256,int256): 1, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE +// f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 1 -> FAILURE, hex"4e487b71", 0x11 +// f(int256,int256): 1, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE, hex"4e487b71", 0x11 // f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000001, -1 -> 0x8000000000000000000000000000000000000000000000000000000000000000 // f(int256,int256): -1, 0x8000000000000000000000000000000000000000000000000000000000000001 -> 0x8000000000000000000000000000000000000000000000000000000000000000 -// f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000000, -1 -> FAILURE -// f(int256,int256): -1, 0x8000000000000000000000000000000000000000000000000000000000000000 -> FAILURE +// f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000000, -1 -> FAILURE, hex"4e487b71", 0x11 +// f(int256,int256): -1, 0x8000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"4e487b71", 0x11 // g(int8,int8): 5, 6 -> 11 // g(int8,int8): -2, 1 -> -1 // g(int8,int8): -2, 2 -> 0 @@ -29,9 +29,9 @@ contract C { // g(int8,int8): -5, -6 -> -11 // g(int8,int8): 126, 1 -> 127 // g(int8,int8): 1, 126 -> 127 -// g(int8,int8): 127, 1 -> FAILURE -// g(int8,int8): 1, 127 -> FAILURE +// g(int8,int8): 127, 1 -> FAILURE, hex"4e487b71", 0x11 +// g(int8,int8): 1, 127 -> FAILURE, hex"4e487b71", 0x11 // g(int8,int8): -127, -1 -> -128 // g(int8,int8): -1, -127 -> -128 -// g(int8,int8): -127, -2 -> FAILURE -// g(int8,int8): -2, -127 -> FAILURE +// g(int8,int8): -127, -2 -> FAILURE, hex"4e487b71", 0x11 +// g(int8,int8): -2, -127 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/viaYul/detect_div_overflow.sol b/test/libsolidity/semanticTests/viaYul/detect_div_overflow.sol index babda4683..bd53e3dc4 100644 --- a/test/libsolidity/semanticTests/viaYul/detect_div_overflow.sol +++ b/test/libsolidity/semanticTests/viaYul/detect_div_overflow.sol @@ -13,15 +13,15 @@ contract C { // compileViaYul: also // ---- // f(uint256,uint256): 10, 3 -> 3 -// f(uint256,uint256): 1, 0 -> FAILURE -// f(uint256,uint256): 0, 0 -> FAILURE +// f(uint256,uint256): 1, 0 -> FAILURE, hex"4e487b71", 0x12 +// f(uint256,uint256): 0, 0 -> FAILURE, hex"4e487b71", 0x12 // f(uint256,uint256): 0, 1 -> 0 // g(int8,int8): -10, 3 -> -3 // g(int8,int8): -10, -3 -> 3 -// g(int8,int8): -10, 0 -> FAILURE +// g(int8,int8): -10, 0 -> FAILURE, hex"4e487b71", 0x12 // g(int8,int8): -128, 1 -> -128 // g(int8,int8): -128, -2 -> 64 // g(int8,int8): -128, 2 -> -64 -// g(int8,int8): -128, -1 -> FAILURE +// g(int8,int8): -128, -1 -> FAILURE, hex"4e487b71", 0x11 // g(int8,int8): -127, -1 -> 127 // h(uint256,uint256): 0x8000000000000000000000000000000000000000000000000000000000000000, -1 -> 0 diff --git a/test/libsolidity/semanticTests/viaYul/detect_mod_zero.sol b/test/libsolidity/semanticTests/viaYul/detect_mod_zero.sol index 5933f0462..8720460ac 100644 --- a/test/libsolidity/semanticTests/viaYul/detect_mod_zero.sol +++ b/test/libsolidity/semanticTests/viaYul/detect_mod_zero.sol @@ -13,13 +13,13 @@ contract C { // f(uint256,uint256): 10, 2 -> 0 // f(uint256,uint256): 11, 2 -> 1 // f(uint256,uint256): 2, 2 -> 0 -// f(uint256,uint256): 1, 0 -> FAILURE -// f(uint256,uint256): 0, 0 -> FAILURE +// f(uint256,uint256): 1, 0 -> FAILURE, hex"4e487b71", 0x12 +// f(uint256,uint256): 0, 0 -> FAILURE, hex"4e487b71", 0x12 // f(uint256,uint256): 0, 1 -> 0 // g(uint8,uint8): 10, 3 -> 1 // g(uint8,uint8): 10, 2 -> 0 // g(uint8,uint8): 11, 2 -> 1 // g(uint8,uint8): 2, 2 -> 0 -// g(uint8,uint8): 1, 0 -> FAILURE -// g(uint8,uint8): 0, 0 -> FAILURE +// g(uint8,uint8): 1, 0 -> FAILURE, hex"4e487b71", 0x12 +// g(uint8,uint8): 0, 0 -> FAILURE, hex"4e487b71", 0x12 // g(uint8,uint8): 0, 1 -> 0 diff --git a/test/libsolidity/semanticTests/viaYul/detect_mod_zero_signed.sol b/test/libsolidity/semanticTests/viaYul/detect_mod_zero_signed.sol index b0dd8ea79..dddc9bd72 100644 --- a/test/libsolidity/semanticTests/viaYul/detect_mod_zero_signed.sol +++ b/test/libsolidity/semanticTests/viaYul/detect_mod_zero_signed.sol @@ -16,9 +16,9 @@ contract C { // f(int256,int256): 10, -3 -> 1 // f(int256,int256): -10, -3 -> -1 // f(int256,int256): 2, 2 -> 0 -// f(int256,int256): 1, 0 -> FAILURE -// f(int256,int256): -1, 0 -> FAILURE -// f(int256,int256): 0, 0 -> FAILURE +// f(int256,int256): 1, 0 -> FAILURE, hex"4e487b71", 0x12 +// f(int256,int256): -1, 0 -> FAILURE, hex"4e487b71", 0x12 +// f(int256,int256): 0, 0 -> FAILURE, hex"4e487b71", 0x12 // f(int256,int256): 0, 1 -> 0 // f(int256,int256): 0, -1 -> 0 // g(int8,int8): 10, 3 -> 1 @@ -28,8 +28,8 @@ contract C { // g(int8,int8): 10, -3 -> 1 // g(int8,int8): -10, -3 -> -1 // g(int8,int8): 2, 2 -> 0 -// g(int8,int8): 1, 0 -> FAILURE -// g(int8,int8): -1, 0 -> FAILURE -// g(int8,int8): 0, 0 -> FAILURE +// g(int8,int8): 1, 0 -> FAILURE, hex"4e487b71", 0x12 +// g(int8,int8): -1, 0 -> FAILURE, hex"4e487b71", 0x12 +// g(int8,int8): 0, 0 -> FAILURE, hex"4e487b71", 0x12 // g(int8,int8): 0, 1 -> 0 // g(int8,int8): 0, -1 -> 0 diff --git a/test/libsolidity/semanticTests/viaYul/detect_mul_overflow.sol b/test/libsolidity/semanticTests/viaYul/detect_mul_overflow.sol index 0c0d002ae..2d3d6ada1 100644 --- a/test/libsolidity/semanticTests/viaYul/detect_mul_overflow.sol +++ b/test/libsolidity/semanticTests/viaYul/detect_mul_overflow.sol @@ -11,27 +11,27 @@ contract C { // ---- // f(uint256,uint256): 5, 6 -> 30 // f(uint256,uint256): -1, 1 -> -1 -// f(uint256,uint256): -1, 2 -> FAILURE -// f(uint256,uint256): 0x8000000000000000000000000000000000000000000000000000000000000000, 2 -> FAILURE +// f(uint256,uint256): -1, 2 -> FAILURE, hex"4e487b71", 0x11 +// f(uint256,uint256): 0x8000000000000000000000000000000000000000000000000000000000000000, 2 -> FAILURE, hex"4e487b71", 0x11 // f(uint256,uint256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 2 -> -2 -// f(uint256,uint256): 2, 0x8000000000000000000000000000000000000000000000000000000000000000 -> FAILURE +// f(uint256,uint256): 2, 0x8000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"4e487b71", 0x11 // f(uint256,uint256): 2, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> -2 -// f(uint256,uint256): 0x0100000000000000000000000000000000, 0x0100000000000000000000000000000000 -> FAILURE +// f(uint256,uint256): 0x0100000000000000000000000000000000, 0x0100000000000000000000000000000000 -> FAILURE, hex"4e487b71", 0x11 // f(uint256,uint256): 0x0100000000000000000000000000000000, 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 // f(uint256,uint256): 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 0x0100000000000000000000000000000000 -> 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 // f(uint256,uint256): 0x0100000000000000000000000000000001, 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> -1 // f(uint256,uint256): 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 0x0100000000000000000000000000000001 -> -1 -// f(uint256,uint256): 0x0100000000000000000000000000000002, 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE -// f(uint256,uint256): 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 0x0100000000000000000000000000000002 -> FAILURE +// f(uint256,uint256): 0x0100000000000000000000000000000002, 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE, hex"4e487b71", 0x11 +// f(uint256,uint256): 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 0x0100000000000000000000000000000002 -> FAILURE, hex"4e487b71", 0x11 // f(uint256,uint256): -1, 0 -> 0 // f(uint256,uint256): 0, -1 -> 0 // g(uint8,uint8): 5, 6 -> 30 -// g(uint8,uint8): 0x80, 2 -> FAILURE +// g(uint8,uint8): 0x80, 2 -> FAILURE, hex"4e487b71", 0x11 // g(uint8,uint8): 0x7F, 2 -> 254 // g(uint8,uint8): 2, 0x7F -> 254 -// g(uint8,uint8): 0x10, 0x10 -> FAILURE +// g(uint8,uint8): 0x10, 0x10 -> FAILURE, hex"4e487b71", 0x11 // g(uint8,uint8): 0x0F, 0x11 -> 0xFF -// g(uint8,uint8): 0x0F, 0x12 -> FAILURE -// g(uint8,uint8): 0x12, 0x0F -> FAILURE +// g(uint8,uint8): 0x0F, 0x12 -> FAILURE, hex"4e487b71", 0x11 +// g(uint8,uint8): 0x12, 0x0F -> FAILURE, hex"4e487b71", 0x11 // g(uint8,uint8): 0xFF, 0 -> 0 // g(uint8,uint8): 0, 0xFF -> 0 diff --git a/test/libsolidity/semanticTests/viaYul/detect_mul_overflow_signed.sol b/test/libsolidity/semanticTests/viaYul/detect_mul_overflow_signed.sol index f490fe2b8..e9db203f9 100644 --- a/test/libsolidity/semanticTests/viaYul/detect_mul_overflow_signed.sol +++ b/test/libsolidity/semanticTests/viaYul/detect_mul_overflow_signed.sol @@ -13,37 +13,51 @@ contract C { // f(int256,int256): -1, 1 -> -1 // f(int256,int256): -1, 2 -> -2 # positive, positive # // f(int256,int256): 0x3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 2 -> 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE -// f(int256,int256): 0x4000000000000000000000000000000000000000000000000000000000000000, 2 -> FAILURE +// f(int256,int256): 0x4000000000000000000000000000000000000000000000000000000000000000, 2 -> FAILURE, hex"4e487b71", 0x11 // f(int256,int256): 2, 0x3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE -// f(int256,int256): 2, 0x4000000000000000000000000000000000000000000000000000000000000000 -> FAILURE # positive, negative # +// f(int256,int256): 2, 0x4000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"4e487b71", 0x11 # positive, negative # +// f(int256,int256): 2, 0x4000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"4e487b71", 0x11 # positive, negative # +// f(int256,int256): 2, 0x4000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"4e487b71", 0x11 # positive, negative # // f(int256,int256): 0x4000000000000000000000000000000000000000000000000000000000000000, -2 -> 0x8000000000000000000000000000000000000000000000000000000000000000 -// f(int256,int256): 0x4000000000000000000000000000000000000000000000000000000000000001, -2 -> FAILURE +// f(int256,int256): 0x4000000000000000000000000000000000000000000000000000000000000001, -2 -> FAILURE, hex"4e487b71", 0x11 // f(int256,int256): 2, 0xC000000000000000000000000000000000000000000000000000000000000000 -> 0x8000000000000000000000000000000000000000000000000000000000000000 -// f(int256,int256): 2, 0xBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE # negative, positive # +// f(int256,int256): 2, 0xBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE, hex"4e487b71", 0x11 # negative, positive # +// f(int256,int256): 2, 0xBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE, hex"4e487b71", 0x11 # negative, positive # +// f(int256,int256): 2, 0xBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE, hex"4e487b71", 0x11 # negative, positive # // f(int256,int256): -2, 0x4000000000000000000000000000000000000000000000000000000000000000 -> 0x8000000000000000000000000000000000000000000000000000000000000000 -// f(int256,int256): -2, 0x4000000000000000000000000000000000000000000000000000000000000001 -> FAILURE +// f(int256,int256): -2, 0x4000000000000000000000000000000000000000000000000000000000000001 -> FAILURE, hex"4e487b71", 0x11 // f(int256,int256): 0xC000000000000000000000000000000000000000000000000000000000000000, 2 -> 0x8000000000000000000000000000000000000000000000000000000000000000 -// f(int256,int256): 0xBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 2 -> FAILURE # negative, negative # +// f(int256,int256): 0xBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 2 -> FAILURE, hex"4e487b71", 0x11 # negative, negative # +// f(int256,int256): 0xBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 2 -> FAILURE, hex"4e487b71", 0x11 # negative, negative # +// f(int256,int256): 0xBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 2 -> FAILURE, hex"4e487b71", 0x11 # negative, negative # // f(int256,int256): 0xC000000000000000000000000000000000000000000000000000000000000001, -2 -> 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE -// f(int256,int256): 0xC000000000000000000000000000000000000000000000000000000000000000, -2 -> FAILURE +// f(int256,int256): 0xC000000000000000000000000000000000000000000000000000000000000000, -2 -> FAILURE, hex"4e487b71", 0x11 // f(int256,int256): -2, 0xC000000000000000000000000000000000000000000000000000000000000001 -> 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE -// f(int256,int256): -2, 0xC000000000000000000000000000000000000000000000000000000000000000 -> FAILURE # small type # +// f(int256,int256): -2, 0xC000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"4e487b71", 0x11 # small type # +// f(int256,int256): -2, 0xC000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"4e487b71", 0x11 # small type # +// f(int256,int256): -2, 0xC000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"4e487b71", 0x11 # small type # // g(int8,int8): 5, 6 -> 30 // g(int8,int8): -1, 1 -> -1 // g(int8,int8): -1, 2 -> -2 # positive, positive # // g(int8,int8): 63, 2 -> 126 -// g(int8,int8): 64, 2 -> FAILURE +// g(int8,int8): 64, 2 -> FAILURE, hex"4e487b71", 0x11 // g(int8,int8): 2, 63 -> 126 -// g(int8,int8): 2, 64 -> FAILURE # positive, negative # +// g(int8,int8): 2, 64 -> FAILURE, hex"4e487b71", 0x11 # positive, negative # +// g(int8,int8): 2, 64 -> FAILURE, hex"4e487b71", 0x11 # positive, negative # +// g(int8,int8): 2, 64 -> FAILURE, hex"4e487b71", 0x11 # positive, negative # // g(int8,int8): 64, -2 -> -128 -// g(int8,int8): 65, -2 -> FAILURE +// g(int8,int8): 65, -2 -> FAILURE, hex"4e487b71", 0x11 // g(int8,int8): 2, -64 -> -128 -// g(int8,int8): 2, -65 -> FAILURE # negative, positive # +// g(int8,int8): 2, -65 -> FAILURE, hex"4e487b71", 0x11 # negative, positive # +// g(int8,int8): 2, -65 -> FAILURE, hex"4e487b71", 0x11 # negative, positive # +// g(int8,int8): 2, -65 -> FAILURE, hex"4e487b71", 0x11 # negative, positive # // g(int8,int8): -2, 64 -> -128 -// g(int8,int8): -2, 65 -> FAILURE +// g(int8,int8): -2, 65 -> FAILURE, hex"4e487b71", 0x11 // g(int8,int8): -64, 2 -> -128 -// g(int8,int8): -65, 2 -> FAILURE # negative, negative # +// g(int8,int8): -65, 2 -> FAILURE, hex"4e487b71", 0x11 # negative, negative # +// g(int8,int8): -65, 2 -> FAILURE, hex"4e487b71", 0x11 # negative, negative # +// g(int8,int8): -65, 2 -> FAILURE, hex"4e487b71", 0x11 # negative, negative # // g(int8,int8): -63, -2 -> 126 -// g(int8,int8): -64, -2 -> FAILURE +// g(int8,int8): -64, -2 -> FAILURE, hex"4e487b71", 0x11 // g(int8,int8): -2, -63 -> 126 -// g(int8,int8): -2, -64 -> FAILURE +// g(int8,int8): -2, -64 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/viaYul/detect_sub_overflow.sol b/test/libsolidity/semanticTests/viaYul/detect_sub_overflow.sol index d15fd0693..7b91c1699 100644 --- a/test/libsolidity/semanticTests/viaYul/detect_sub_overflow.sol +++ b/test/libsolidity/semanticTests/viaYul/detect_sub_overflow.sol @@ -11,7 +11,7 @@ contract C { // ---- // f(uint256,uint256): 6, 5 -> 1 // f(uint256,uint256): 6, 6 -> 0 -// f(uint256,uint256): 5, 6 -> FAILURE +// f(uint256,uint256): 5, 6 -> FAILURE, hex"4e487b71", 0x11 // g(uint8,uint8): 6, 5 -> 1 // g(uint8,uint8): 6, 6 -> 0 -// g(uint8,uint8): 5, 6 -> FAILURE +// g(uint8,uint8): 5, 6 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/viaYul/detect_sub_overflow_signed.sol b/test/libsolidity/semanticTests/viaYul/detect_sub_overflow_signed.sol index 15899939e..d1c2f6006 100644 --- a/test/libsolidity/semanticTests/viaYul/detect_sub_overflow_signed.sol +++ b/test/libsolidity/semanticTests/viaYul/detect_sub_overflow_signed.sol @@ -16,16 +16,16 @@ contract C { // f(int256,int256): 2, 2 -> 0 // f(int256,int256): -5, -6 -> 1 // f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0, -15 -> 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -// f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0, -16 -> FAILURE -// f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, -1 -> FAILURE +// f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0, -16 -> FAILURE, hex"4e487b71", 0x11 +// f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, -1 -> FAILURE, hex"4e487b71", 0x11 // f(int256,int256): 15, 0x8000000000000000000000000000000000000000000000000000000000000010 -> 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -// f(int256,int256): 16, 0x8000000000000000000000000000000000000000000000000000000000000010 -> FAILURE -// f(int256,int256): 1, 0x8000000000000000000000000000000000000000000000000000000000000000 -> FAILURE +// f(int256,int256): 16, 0x8000000000000000000000000000000000000000000000000000000000000010 -> FAILURE, hex"4e487b71", 0x11 +// f(int256,int256): 1, 0x8000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"4e487b71", 0x11 // f(int256,int256): -1, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> 0x8000000000000000000000000000000000000000000000000000000000000000 -// f(int256,int256): -2, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE +// f(int256,int256): -2, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE, hex"4e487b71", 0x11 // f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000001, 1 -> 0x8000000000000000000000000000000000000000000000000000000000000000 -// f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000001, 2 -> FAILURE -// f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000000, 1 -> FAILURE +// f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000001, 2 -> FAILURE, hex"4e487b71", 0x11 +// f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000000, 1 -> FAILURE, hex"4e487b71", 0x11 // g(int8,int8): 5, 6 -> -1 // g(int8,int8): -2, 1 -> -3 // g(int8,int8): -2, 2 -> -4 @@ -34,9 +34,9 @@ contract C { // g(int8,int8): -5, -6 -> 1 // g(int8,int8): 126, -1 -> 127 // g(int8,int8): 1, -126 -> 127 -// g(int8,int8): 127, -1 -> FAILURE -// g(int8,int8): 1, -127 -> FAILURE +// g(int8,int8): 127, -1 -> FAILURE, hex"4e487b71", 0x11 +// g(int8,int8): 1, -127 -> FAILURE, hex"4e487b71", 0x11 // g(int8,int8): -127, 1 -> -128 // g(int8,int8): -1, 127 -> -128 -// g(int8,int8): -127, 2 -> FAILURE -// g(int8,int8): -2, 127 -> FAILURE +// g(int8,int8): -127, 2 -> FAILURE, hex"4e487b71", 0x11 +// g(int8,int8): -2, 127 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/viaYul/erc20.sol b/test/libsolidity/semanticTests/viaYul/erc20.sol index b792fa56b..d9493d8e8 100644 --- a/test/libsolidity/semanticTests/viaYul/erc20.sol +++ b/test/libsolidity/semanticTests/viaYul/erc20.sol @@ -99,6 +99,6 @@ contract ERC20 { // totalSupply() -> 20 // transfer(address,uint256): 2, 5 -> true // decreaseAllowance(address,uint256): 2, 0 -> true -// decreaseAllowance(address,uint256): 2, 1 -> FAILURE +// decreaseAllowance(address,uint256): 2, 1 -> FAILURE, hex"4e487b71", 0x11 // transfer(address,uint256): 2, 14 -> true -// transfer(address,uint256): 2, 2 -> FAILURE +// transfer(address,uint256): 2, 2 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/viaYul/exp_literals.sol b/test/libsolidity/semanticTests/viaYul/exp_literals.sol index 85a85ab66..382d75184 100644 --- a/test/libsolidity/semanticTests/viaYul/exp_literals.sol +++ b/test/libsolidity/semanticTests/viaYul/exp_literals.sol @@ -32,18 +32,18 @@ contract C { // compileViaYul: true // ---- // exp_2(uint256): 255 -> 57896044618658097711785492504343953926634992332820282019728792003956564819968 -// exp_2(uint256): 256 -> FAILURE +// exp_2(uint256): 256 -> FAILURE, hex"4e487b71", 0x11 // exp_minus_2(uint256): 255 -> -57896044618658097711785492504343953926634992332820282019728792003956564819968 -// exp_minus_2(uint256): 256 -> FAILURE +// exp_minus_2(uint256): 256 -> FAILURE, hex"4e487b71", 0x11 // exp_uint_max(uint256): 1 -> 115792089237316195423570985008687907853269984665640564039457584007913129639935 -// exp_uint_max(uint256): 2 -> FAILURE +// exp_uint_max(uint256): 2 -> FAILURE, hex"4e487b71", 0x11 // exp_int_max(uint256): 1 -> -57896044618658097711785492504343953926634992332820282019728792003956564819968 -// exp_int_max(uint256): 2 -> FAILURE +// exp_int_max(uint256): 2 -> FAILURE, hex"4e487b71", 0x11 // exp_5(uint256): 110 -> 77037197775489434122239117703397092741524065928615527809597551822662353515625 -// exp_5(uint256): 111 -> FAILURE +// exp_5(uint256): 111 -> FAILURE, hex"4e487b71", 0x11 // exp_minus_5(uint256): 109 -> -15407439555097886824447823540679418548304813185723105561919510364532470703125 -// exp_minus_5(uint256): 110 -> FAILURE +// exp_minus_5(uint256): 110 -> FAILURE, hex"4e487b71", 0x11 // exp_256(uint256): 31 -> 452312848583266388373324160190187140051835877600158453279131187530910662656 -// exp_256(uint256): 32 -> FAILURE +// exp_256(uint256): 32 -> FAILURE, hex"4e487b71", 0x11 // exp_minus_256(uint256): 31 -> -452312848583266388373324160190187140051835877600158453279131187530910662656 -// exp_minus_256(uint256): 32 -> FAILURE +// exp_minus_256(uint256): 32 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/viaYul/exp_neg_overflow.sol b/test/libsolidity/semanticTests/viaYul/exp_neg_overflow.sol index c3a5064d4..93617ffbb 100644 --- a/test/libsolidity/semanticTests/viaYul/exp_neg_overflow.sol +++ b/test/libsolidity/semanticTests/viaYul/exp_neg_overflow.sol @@ -10,29 +10,29 @@ contract C { // compileViaYul: also // ---- // f(int8,uint256): 2, 6 -> 64 -// f(int8,uint256): 2, 7 -> FAILURE -// f(int8,uint256): 2, 8 -> FAILURE +// f(int8,uint256): 2, 7 -> FAILURE, hex"4e487b71", 0x11 +// f(int8,uint256): 2, 8 -> FAILURE, hex"4e487b71", 0x11 // f(int8,uint256): -2, 6 -> 64 // f(int8,uint256): -2, 7 -> -128 -// f(int8,uint256): -2, 8 -> FAILURE -// f(int8,uint256): 6, 3 -> FAILURE +// f(int8,uint256): -2, 8 -> FAILURE, hex"4e487b71", 0x11 +// f(int8,uint256): 6, 3 -> FAILURE, hex"4e487b71", 0x11 // f(int8,uint256): 7, 2 -> 0x31 -// f(int8,uint256): 7, 3 -> FAILURE +// f(int8,uint256): 7, 3 -> FAILURE, hex"4e487b71", 0x11 // f(int8,uint256): -7, 2 -> 0x31 -// f(int8,uint256): -7, 3 -> FAILURE -// f(int8,uint256): -7, 4 -> FAILURE -// f(int8,uint256): 127, 31 -> FAILURE -// f(int8,uint256): 127, 131 -> FAILURE +// f(int8,uint256): -7, 3 -> FAILURE, hex"4e487b71", 0x11 +// f(int8,uint256): -7, 4 -> FAILURE, hex"4e487b71", 0x11 +// f(int8,uint256): 127, 31 -> FAILURE, hex"4e487b71", 0x11 +// f(int8,uint256): 127, 131 -> FAILURE, hex"4e487b71", 0x11 // f(int8,uint256): -128, 0 -> 1 // f(int8,uint256): -128, 1 -> -128 -// f(int8,uint256): -128, 31 -> FAILURE -// f(int8,uint256): -128, 131 -> FAILURE +// f(int8,uint256): -128, 31 -> FAILURE, hex"4e487b71", 0x11 +// f(int8,uint256): -128, 131 -> FAILURE, hex"4e487b71", 0x11 // f(int8,uint256): -11, 2 -> 121 -// f(int8,uint256): -12, 2 -> FAILURE -// f(int8,uint256): 12, 2 -> FAILURE +// f(int8,uint256): -12, 2 -> FAILURE, hex"4e487b71", 0x11 +// f(int8,uint256): 12, 2 -> FAILURE, hex"4e487b71", 0x11 // f(int8,uint256): -5, 3 -> -125 -// f(int8,uint256): -6, 3 -> FAILURE +// f(int8,uint256): -6, 3 -> FAILURE, hex"4e487b71", 0x11 // g(int256,uint256): -7, 90 -> 11450477594321044359340126713545146077054004823284978858214566372120240027249 -// g(int256,uint256): -7, 91 -> FAILURE +// g(int256,uint256): -7, 91 -> FAILURE, hex"4e487b71", 0x11 // g(int256,uint256): -63, 42 -> 3735107253208426854890677539053540390278853997836851167913009474475553834369 -// g(int256,uint256): -63, 43 -> FAILURE +// g(int256,uint256): -63, 43 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/viaYul/exp_overflow.sol b/test/libsolidity/semanticTests/viaYul/exp_overflow.sol index 18074226a..b3d998517 100644 --- a/test/libsolidity/semanticTests/viaYul/exp_overflow.sol +++ b/test/libsolidity/semanticTests/viaYul/exp_overflow.sol @@ -10,22 +10,22 @@ contract C { // compileViaYul: also // ---- // f(uint8,uint8): 2, 7 -> 0x80 -// f(uint8,uint8): 2, 8 -> FAILURE +// f(uint8,uint8): 2, 8 -> FAILURE, hex"4e487b71", 0x11 // f(uint8,uint8): 15, 2 -> 225 // f(uint8,uint8): 6, 3 -> 0xd8 // f(uint8,uint8): 7, 2 -> 0x31 -// f(uint8,uint8): 7, 3 -> FAILURE -// f(uint8,uint8): 7, 4 -> FAILURE -// f(uint8,uint8): 255, 31 -> FAILURE -// f(uint8,uint8): 255, 131 -> FAILURE +// f(uint8,uint8): 7, 3 -> FAILURE, hex"4e487b71", 0x11 +// f(uint8,uint8): 7, 4 -> FAILURE, hex"4e487b71", 0x11 +// f(uint8,uint8): 255, 31 -> FAILURE, hex"4e487b71", 0x11 +// f(uint8,uint8): 255, 131 -> FAILURE, hex"4e487b71", 0x11 // g(uint256,uint256): 0x200000000000000000000000000000000, 1 -> 0x0200000000000000000000000000000000 -// g(uint256,uint256): 0x100000000000000000000000000000010, 2 -> FAILURE -// g(uint256,uint256): 0x200000000000000000000000000000000, 2 -> FAILURE -// g(uint256,uint256): 0x200000000000000000000000000000000, 3 -> FAILURE +// g(uint256,uint256): 0x100000000000000000000000000000010, 2 -> FAILURE, hex"4e487b71", 0x11 +// g(uint256,uint256): 0x200000000000000000000000000000000, 2 -> FAILURE, hex"4e487b71", 0x11 +// g(uint256,uint256): 0x200000000000000000000000000000000, 3 -> FAILURE, hex"4e487b71", 0x11 // g(uint256,uint256): 255, 31 -> 400631961586894742455537928461950192806830589109049416147172451019287109375 // g(uint256,uint256): 255, 32 -> -13630939032658036097408813250890608687528184442832962921928608997994916749311 -// g(uint256,uint256): 255, 33 -> FAILURE -// g(uint256,uint256): 255, 131 -> FAILURE +// g(uint256,uint256): 255, 33 -> FAILURE, hex"4e487b71", 0x11 +// g(uint256,uint256): 255, 131 -> FAILURE, hex"4e487b71", 0x11 // g(uint256,uint256): 258, 31 -> 575719427506838823084316385994930914701079543089399988096291424922125729792 -// g(uint256,uint256): 258, 37 -> FAILURE -// g(uint256,uint256): 258, 131 -> FAILURE +// g(uint256,uint256): 258, 37 -> FAILURE, hex"4e487b71", 0x11 +// g(uint256,uint256): 258, 131 -> FAILURE, hex"4e487b71", 0x11 diff --git a/test/libsolidity/semanticTests/viaYul/function_pointers.sol b/test/libsolidity/semanticTests/viaYul/function_pointers.sol index 5bd433a3d..d06c408f8 100644 --- a/test/libsolidity/semanticTests/viaYul/function_pointers.sol +++ b/test/libsolidity/semanticTests/viaYul/function_pointers.sol @@ -19,7 +19,7 @@ contract C { // ==== // compileViaYul: also // ---- -// f() -> FAILURE +// f() -> FAILURE, hex"4e487b71", 0x51 // g() -> FAILURE -// h2() -> FAILURE +// h2() -> FAILURE, hex"4e487b71", 0x51 // k2() -> FAILURE diff --git a/test/libsolidity/semanticTests/viaYul/unary_operations.sol b/test/libsolidity/semanticTests/viaYul/unary_operations.sol index 17f7dba4f..17d8dad03 100644 --- a/test/libsolidity/semanticTests/viaYul/unary_operations.sol +++ b/test/libsolidity/semanticTests/viaYul/unary_operations.sol @@ -87,24 +87,24 @@ contract C { // ---- // preincr_s8(int8): 128 -> FAILURE // postincr_s8(int8): 128 -> FAILURE -// preincr_s8(int8): 127 -> FAILURE -// postincr_s8(int8): 127 -> FAILURE +// preincr_s8(int8): 127 -> FAILURE, hex"4e487b71", 0x11 +// postincr_s8(int8): 127 -> FAILURE, hex"4e487b71", 0x11 // preincr_s8(int8): 126 -> 127, 127 // postincr_s8(int8): 126 -> 126, 127 -// predecr_s8(int8): -128 -> FAILURE -// postdecr_s8(int8): -128 -> FAILURE +// predecr_s8(int8): -128 -> FAILURE, hex"4e487b71", 0x11 +// postdecr_s8(int8): -128 -> FAILURE, hex"4e487b71", 0x11 // predecr_s8(int8): -127 -> -128, -128 // postdecr_s8(int8): -127 -> -127, -128 // preincr_s8(int8): -5 -> -4, -4 // postincr_s8(int8): -5 -> -5, -4 // predecr_s8(int8): -5 -> -6, -6 // postdecr_s8(int8): -5 -> -5, -6 -// preincr_u8(uint8): 255 -> FAILURE -// postincr_u8(uint8): 255 -> FAILURE -// preincr_u8(uint8): 254 -> FAILURE -// postincr_u8(uint8): 254 -> FAILURE -// predecr_u8(uint8): 0 -> FAILURE -// postdecr_u8(uint8): 0 -> FAILURE +// preincr_u8(uint8): 255 -> FAILURE, hex"4e487b71", 0x11 +// postincr_u8(uint8): 255 -> FAILURE, hex"4e487b71", 0x11 +// preincr_u8(uint8): 254 -> FAILURE, hex"4e487b71", 0x11 +// postincr_u8(uint8): 254 -> FAILURE, hex"4e487b71", 0x11 +// predecr_u8(uint8): 0 -> FAILURE, hex"4e487b71", 0x11 +// postdecr_u8(uint8): 0 -> FAILURE, hex"4e487b71", 0x11 // predecr_u8(uint8): 1 -> 0 // postdecr_u8(uint8): 1 -> 1 // preincr_u8(uint8): 2 -> 6 @@ -123,14 +123,14 @@ contract C { // bitnot(int256): -100 -> 99 // bitnot_u8(uint8): 100 -> 155 // bitnot_s8() -> 99 -// negate(int256): -57896044618658097711785492504343953926634992332820282019728792003956564819968 -> FAILURE +// negate(int256): -57896044618658097711785492504343953926634992332820282019728792003956564819968 -> FAILURE, hex"4e487b71", 0x11 // negate(int256): -57896044618658097711785492504343953926634992332820282019728792003956564819967 -> 57896044618658097711785492504343953926634992332820282019728792003956564819967 // negate(int256): 0 -> 0 // negate(int256): 1 -> -1 // negate(int256): -1 -> 1 -// negate_s8(int8): -128 -> FAILURE +// negate_s8(int8): -128 -> FAILURE, hex"4e487b71", 0x11 // negate_s8(int8): -138 -> FAILURE // negate_s8(int8): -127 -> 127 // negate_s8(int8): 127 -> -127 -// negate_s16(int16): -32768 -> FAILURE +// negate_s16(int16): -32768 -> FAILURE, hex"4e487b71", 0x11 // negate_s16(int16): -32767 -> 32767