diff --git a/test/TestCase.cpp b/test/TestCase.cpp index da47c26fde90..01ecb0d90b87 100644 --- a/test/TestCase.cpp +++ b/test/TestCase.cpp @@ -149,17 +149,26 @@ void EVMVersionRestrictedTestCase::processBytecodeFormatSetting() // EOF only available since Osaka solAssert(!eofVersion.has_value() || solidity::test::CommonOptions::get().evmVersion().supportsEOF()); - std::string bytecodeFormatString = m_reader.stringSetting("bytecodeFormat", "legacy,>=EOFv1"); - if (bytecodeFormatString == "legacy,>=EOFv1" || bytecodeFormatString == ">=EOFv1,legacy") + auto const bytecodeFormatStr = m_reader.stringSetting("bytecodeFormat", "legacy,>=EOFv1"); + if (bytecodeFormatStr == "legacy,>=EOFv1" || bytecodeFormatStr == ">=EOFv1,legacy") + m_bytecodeFormat = {BytecodeFormat::Legacy, BytecodeFormat::EOFv1}; + else if (bytecodeFormatStr == "legacy") + m_bytecodeFormat = {BytecodeFormat::Legacy}; + else if (bytecodeFormatStr == ">=EOFv1") + m_bytecodeFormat = {BytecodeFormat::EOFv1}; + else if (bytecodeFormatStr.empty()) + BOOST_THROW_EXCEPTION(std::runtime_error{"The 'bytecodeFormat' setting requires at least one value."}); + else + BOOST_THROW_EXCEPTION(std::runtime_error{"Invalid bytecodeFormat flag: \"" + bytecodeFormatStr + "\""}); + + if (bytecodeFormat().contains(BytecodeFormat::Legacy) && bytecodeFormat().contains(BytecodeFormat::EOFv1)) return; // TODO: This is naive implementation because for now we support only one EOF version. - if (bytecodeFormatString == "legacy" && eofVersion.has_value()) + if (!bytecodeFormat().contains(BytecodeFormat::EOFv1) && eofVersion.has_value()) m_shouldRun = false; - else if (bytecodeFormatString == ">=EOFv1" && !eofVersion.has_value()) + else if (bytecodeFormat().contains(BytecodeFormat::EOFv1) && !eofVersion.has_value()) m_shouldRun = false; - else if (bytecodeFormatString != "legacy" && bytecodeFormatString != ">=EOFv1" ) - BOOST_THROW_EXCEPTION(std::runtime_error{"Invalid bytecodeFormat flag: \"" + bytecodeFormatString + "\""}); } EVMVersionRestrictedTestCase::EVMVersionRestrictedTestCase(std::string const& _filename): @@ -168,3 +177,16 @@ EVMVersionRestrictedTestCase::EVMVersionRestrictedTestCase(std::string const& _f processEVMVersionSetting(); processBytecodeFormatSetting(); } + +std::ostream& solidity::frontend::test::operator<<(std::ostream& _output, CompileViaYul _compileViaYul) +{ + switch (_compileViaYul) + { + case CompileViaYul::False: _output << "false"; break; + case CompileViaYul::True: _output << "true"; break; + case CompileViaYul::Also: _output << "also"; break; + case CompileViaYul::OnlyOnEOF: _output << "onlyOnEOF"; break; + } + return _output; +} + diff --git a/test/TestCase.h b/test/TestCase.h index bdf51d2a5566..ecce0eee3970 100644 --- a/test/TestCase.h +++ b/test/TestCase.h @@ -110,14 +110,34 @@ class TestCase bool m_shouldRun = true; }; +enum class BytecodeFormat +{ + Legacy, + EOFv1 +}; + class EVMVersionRestrictedTestCase: public TestCase { private: + std::set m_bytecodeFormat; + void processEVMVersionSetting(); void processBytecodeFormatSetting(); protected: + std::set const& bytecodeFormat() const { return m_bytecodeFormat; } + EVMVersionRestrictedTestCase(std::string const& _filename); }; +enum class CompileViaYul +{ + False, + True, + Also, + OnlyOnEOF, +}; + +std::ostream& operator<<(std::ostream& _output, CompileViaYul _compileViaYul); + } diff --git a/test/libsolidity/SemanticTest.cpp b/test/libsolidity/SemanticTest.cpp index 1b66dd60fffb..e639cb0db663 100644 --- a/test/libsolidity/SemanticTest.cpp +++ b/test/libsolidity/SemanticTest.cpp @@ -73,9 +73,8 @@ SemanticTest::SemanticTest( m_enforceGasCost(_enforceGasCost), m_enforceGasCostMinValue(std::move(_enforceGasCostMinValue)) { - static std::set const compileViaYulAllowedValues{"also", "true", "false"}; - static std::set const yulRunTriggers{"also", "true"}; - static std::set const legacyRunTriggers{"also", "false", "default"}; + static std::set const yulRunTriggers{CompileViaYul::Also, CompileViaYul::True}; + static std::set const legacyRunTriggers{CompileViaYul::Also, CompileViaYul::False}; m_requiresYulOptimizer = m_reader.enumSetting( "requiresYulOptimizer", @@ -92,18 +91,33 @@ SemanticTest::SemanticTest( m_shouldRun = false; auto const eofEnabled = solidity::test::CommonOptions::get().eofVersion().has_value(); - std::string compileViaYul = m_reader.stringSetting("compileViaYul", eofEnabled ? "true" : "also"); - if (compileViaYul == "false" && eofEnabled) + auto const compileViaYul = m_reader.enumSetting( + "compileViaYul", + { + {toString(CompileViaYul::False), CompileViaYul::False}, + {toString(CompileViaYul::True), CompileViaYul::True}, + {toString(CompileViaYul::Also), CompileViaYul::Also}, + {toString(CompileViaYul::OnlyOnEOF), CompileViaYul::OnlyOnEOF} + }, + eofEnabled ? toString(CompileViaYul::True) : toString(CompileViaYul::Also) + ); + + if (compileViaYul == CompileViaYul::OnlyOnEOF) + solUnimplemented("'compileViaYul: onlyOnEOF' is not yet supported in semantic tests."); + + if (bytecodeFormat().contains(BytecodeFormat::EOFv1) && compileViaYul == CompileViaYul::False) + BOOST_THROW_EXCEPTION(std::runtime_error("Compilation to EOF requires using Yul IR")); + + if (compileViaYul == CompileViaYul::False && eofEnabled) m_shouldRun = false; - if (m_runWithABIEncoderV1Only && compileViaYul != "false") + if (m_runWithABIEncoderV1Only && compileViaYul != CompileViaYul::False) BOOST_THROW_EXCEPTION(std::runtime_error( "ABIEncoderV1Only tests cannot be run via yul, " "so they need to also specify ``compileViaYul: false``" )); - if (!util::contains(compileViaYulAllowedValues, compileViaYul)) - BOOST_THROW_EXCEPTION(std::runtime_error("Invalid compileViaYul value: " + compileViaYul + ".")); + m_testCaseWantsYulRun = util::contains(yulRunTriggers, compileViaYul); m_testCaseWantsLegacyRun = util::contains(legacyRunTriggers, compileViaYul); diff --git a/test/libsolidity/SyntaxTest.cpp b/test/libsolidity/SyntaxTest.cpp index 8944710542a5..586e43c8576d 100644 --- a/test/libsolidity/SyntaxTest.cpp +++ b/test/libsolidity/SyntaxTest.cpp @@ -46,16 +46,22 @@ SyntaxTest::SyntaxTest( CommonSyntaxTest(_filename, _evmVersion), m_minSeverity(_minSeverity) { - static std::set const compileViaYulAllowedValues{"true", "false"}; - - auto const eofEnabled = solidity::test::CommonOptions::get().eofVersion().has_value(); + m_compileViaYul = m_reader.enumSetting( + "compileViaYul", + { + {toString(CompileViaYul::False), CompileViaYul::False}, + {toString(CompileViaYul::True), CompileViaYul::True}, + {toString(CompileViaYul::Also), CompileViaYul::Also}, + {toString(CompileViaYul::OnlyOnEOF), CompileViaYul::OnlyOnEOF} + }, + toString(CompileViaYul::OnlyOnEOF) + ); - m_compileViaYul = m_reader.stringSetting("compileViaYul", eofEnabled ? "true" : "false"); - if (!util::contains(compileViaYulAllowedValues, m_compileViaYul)) - BOOST_THROW_EXCEPTION(std::runtime_error("Invalid compileViaYul value: " + m_compileViaYul + ".")); + solUnimplementedAssert(m_compileViaYul != CompileViaYul::Also, + "'compileViaYul: also' is not yet supported in syntax tests."); - if (m_compileViaYul == "false" && eofEnabled) - m_shouldRun = false; + if (bytecodeFormat().contains(BytecodeFormat::EOFv1) && m_compileViaYul == CompileViaYul::False) + BOOST_THROW_EXCEPTION(std::runtime_error("Compilation to EOF requires using Yul IR")); m_optimiseYul = m_reader.boolSetting("optimize-yul", true); @@ -80,7 +86,9 @@ void SyntaxTest::setupCompiler(CompilerStack& _compiler) OptimiserSettings::full() : OptimiserSettings::minimal() ); - _compiler.setViaIR(m_compileViaYul == "true"); + + auto const eofEnabled = solidity::test::CommonOptions::get().eofVersion().has_value(); + _compiler.setViaIR(m_compileViaYul == CompileViaYul::True || (m_compileViaYul == CompileViaYul::OnlyOnEOF && eofEnabled)); _compiler.setMetadataFormat(CompilerStack::MetadataFormat::NoMetadata); _compiler.setMetadataHash(CompilerStack::MetadataHash::None); } diff --git a/test/libsolidity/SyntaxTest.h b/test/libsolidity/SyntaxTest.h index 085a32f944ea..db031aeb296e 100644 --- a/test/libsolidity/SyntaxTest.h +++ b/test/libsolidity/SyntaxTest.h @@ -53,7 +53,7 @@ class SyntaxTest: public AnalysisFramework, public solidity::test::CommonSyntaxT virtual void filterObtainedErrors(); bool m_optimiseYul{}; - std::string m_compileViaYul{}; + CompileViaYul m_compileViaYul{}; langutil::Error::Severity m_minSeverity{}; PipelineStage m_stopAfter; }; diff --git a/test/libsolidity/semanticTests/abiEncodeDecode/abi_encode_empty_string_v1.sol b/test/libsolidity/semanticTests/abiEncodeDecode/abi_encode_empty_string_v1.sol index 9f7216e6bcb4..abe7c357e365 100644 --- a/test/libsolidity/semanticTests/abiEncodeDecode/abi_encode_empty_string_v1.sol +++ b/test/libsolidity/semanticTests/abiEncodeDecode/abi_encode_empty_string_v1.sol @@ -9,5 +9,6 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f() -> 0x40, 0xa0, 0x40, 0x20, 0x0, 0x0 diff --git a/test/libsolidity/semanticTests/abiEncoderV1/abi_encode_empty_string.sol b/test/libsolidity/semanticTests/abiEncoderV1/abi_encode_empty_string.sol index 601fb3cbeea5..95fe0befe822 100644 --- a/test/libsolidity/semanticTests/abiEncoderV1/abi_encode_empty_string.sol +++ b/test/libsolidity/semanticTests/abiEncoderV1/abi_encode_empty_string.sol @@ -22,6 +22,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f1() -> 0x20, 0x40, 0x20, 0 // f2(string): 0x20, 0 -> 0x20, 0x40, 0x20, 0 diff --git a/test/libsolidity/semanticTests/abiEncoderV1/bool_out_of_bounds.sol b/test/libsolidity/semanticTests/abiEncoderV1/bool_out_of_bounds.sol index d9b94ac2e65b..b49099f65214 100644 --- a/test/libsolidity/semanticTests/abiEncoderV1/bool_out_of_bounds.sol +++ b/test/libsolidity/semanticTests/abiEncoderV1/bool_out_of_bounds.sol @@ -5,6 +5,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(bool): true -> true // f(bool): false -> false diff --git a/test/libsolidity/semanticTests/abiEncoderV1/calldata_bytes_bytes32_arrays.sol b/test/libsolidity/semanticTests/abiEncoderV1/calldata_bytes_bytes32_arrays.sol index 18a4ee1a9ee5..977432dcdc40 100644 --- a/test/libsolidity/semanticTests/abiEncoderV1/calldata_bytes_bytes32_arrays.sol +++ b/test/libsolidity/semanticTests/abiEncoderV1/calldata_bytes_bytes32_arrays.sol @@ -10,5 +10,6 @@ contract C { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(bool,bytes,bytes32[2]): true, 0x80, "a", "b", 4, "abcd" -> true, 0x80, "a", "b", 4, "abcd" diff --git a/test/libsolidity/semanticTests/abiEncoderV1/cleanup/cleanup.sol b/test/libsolidity/semanticTests/abiEncoderV1/cleanup/cleanup.sol index 262c4412fd7b..5d8667344f4c 100644 --- a/test/libsolidity/semanticTests/abiEncoderV1/cleanup/cleanup.sol +++ b/test/libsolidity/semanticTests/abiEncoderV1/cleanup/cleanup.sol @@ -8,6 +8,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(uint16,int16,address,bytes3,bool): 1, 2, 3, "a", true -> 1, 2, 3, "a", true // f(uint16,int16,address,bytes3,bool): 0xffffff, 0x1ffff, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, "abcd", 1 -> 0xffff, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffffffffffffff, "abc", true diff --git a/test/libsolidity/semanticTests/abiEncoderV1/enums.sol b/test/libsolidity/semanticTests/abiEncoderV1/enums.sol index a51aaebdefb4..6d94a1d85cfd 100644 --- a/test/libsolidity/semanticTests/abiEncoderV1/enums.sol +++ b/test/libsolidity/semanticTests/abiEncoderV1/enums.sol @@ -8,6 +8,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(uint8): 0 -> 0 // f(uint8): 1 -> 1 diff --git a/test/libsolidity/semanticTests/arithmetics/checked_add_v1.sol b/test/libsolidity/semanticTests/arithmetics/checked_add_v1.sol index 03c2bb567572..7b6bfe7e69cb 100644 --- a/test/libsolidity/semanticTests/arithmetics/checked_add_v1.sol +++ b/test/libsolidity/semanticTests/arithmetics/checked_add_v1.sol @@ -8,6 +8,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(uint16,uint16): 65534, 0 -> 0xfffe // f(uint16,uint16): 65536, 0 -> 0x00 diff --git a/test/libsolidity/semanticTests/array/copying/dirty_memory_bytes_to_storage_copy.sol b/test/libsolidity/semanticTests/array/copying/dirty_memory_bytes_to_storage_copy.sol index ca154eee91e0..b18b15db46d0 100644 --- a/test/libsolidity/semanticTests/array/copying/dirty_memory_bytes_to_storage_copy.sol +++ b/test/libsolidity/semanticTests/array/copying/dirty_memory_bytes_to_storage_copy.sol @@ -15,5 +15,6 @@ contract C { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // f() -> 0x6465616462656566000000000000000000000000000000000000000000000010 diff --git a/test/libsolidity/semanticTests/calldata/calldata_array_dynamic_bytes.sol b/test/libsolidity/semanticTests/calldata/calldata_array_dynamic_bytes.sol index 932f19610207..815b7fe93b39 100644 --- a/test/libsolidity/semanticTests/calldata/calldata_array_dynamic_bytes.sol +++ b/test/libsolidity/semanticTests/calldata/calldata_array_dynamic_bytes.sol @@ -67,6 +67,7 @@ contract C { // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // f1(bytes[1]): 0x20, 0x20, 0x3, hex"0102030000000000000000000000000000000000000000000000000000000000" -> 0x3, 0x1, 0x2, 0x3 // f2(bytes[1],bytes[1]): 0x40, 0xa0, 0x20, 0x3, hex"0102030000000000000000000000000000000000000000000000000000000000", 0x20, 0x2, hex"0102000000000000000000000000000000000000000000000000000000000000" -> 0x3, 0x1, 0x2, 0x3, 0x2, 0x1, 0x2 diff --git a/test/libsolidity/semanticTests/cleanup/bool_conversion_v1.sol b/test/libsolidity/semanticTests/cleanup/bool_conversion_v1.sol index 18fa6ed65184..53647fc88af9 100644 --- a/test/libsolidity/semanticTests/cleanup/bool_conversion_v1.sol +++ b/test/libsolidity/semanticTests/cleanup/bool_conversion_v1.sol @@ -12,6 +12,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(bool): 0x0 -> 0x0 // f(bool): 0x1 -> 0x1 diff --git a/test/libsolidity/semanticTests/cleanup/cleanup_address_types_v1.sol b/test/libsolidity/semanticTests/cleanup/cleanup_address_types_v1.sol index a8622cb0b591..dc374e3cb1b1 100644 --- a/test/libsolidity/semanticTests/cleanup/cleanup_address_types_v1.sol +++ b/test/libsolidity/semanticTests/cleanup/cleanup_address_types_v1.sol @@ -14,6 +14,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(address): 0xffff1234567890123456789012345678901234567890 -> 0x0 # We input longer data on purpose.# // g(address): 0xffff1234567890123456789012345678901234567890 -> 0x0 diff --git a/test/libsolidity/semanticTests/cleanup/cleanup_bytes_types_shortening_OldCodeGen.sol b/test/libsolidity/semanticTests/cleanup/cleanup_bytes_types_shortening_OldCodeGen.sol index 9ca68e6d0d9f..87ff1291b476 100644 --- a/test/libsolidity/semanticTests/cleanup/cleanup_bytes_types_shortening_OldCodeGen.sol +++ b/test/libsolidity/semanticTests/cleanup/cleanup_bytes_types_shortening_OldCodeGen.sol @@ -12,5 +12,6 @@ contract C { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // f() -> 0xffffffff00000000000000000000000000000000000000000000000000000000 diff --git a/test/libsolidity/semanticTests/cleanup/cleanup_bytes_types_v1.sol b/test/libsolidity/semanticTests/cleanup/cleanup_bytes_types_v1.sol index 097da51e46f2..1c5cfe3ddda6 100644 --- a/test/libsolidity/semanticTests/cleanup/cleanup_bytes_types_v1.sol +++ b/test/libsolidity/semanticTests/cleanup/cleanup_bytes_types_v1.sol @@ -11,5 +11,6 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(bytes2,uint16): "abc", 0x40102 -> 0x0 # We input longer data on purpose. # diff --git a/test/libsolidity/semanticTests/functionTypes/call_to_zero_initialized_function_type_legacy.sol b/test/libsolidity/semanticTests/functionTypes/call_to_zero_initialized_function_type_legacy.sol index feca44e0c10f..9dc532a6d465 100644 --- a/test/libsolidity/semanticTests/functionTypes/call_to_zero_initialized_function_type_legacy.sol +++ b/test/libsolidity/semanticTests/functionTypes/call_to_zero_initialized_function_type_legacy.sol @@ -23,5 +23,6 @@ contract C { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // t() -> FAILURE diff --git a/test/libsolidity/semanticTests/inheritance/constructor_inheritance_init_order_3_legacy.sol b/test/libsolidity/semanticTests/inheritance/constructor_inheritance_init_order_3_legacy.sol index d9bed3f54316..b85ff6ccf788 100644 --- a/test/libsolidity/semanticTests/inheritance/constructor_inheritance_init_order_3_legacy.sol +++ b/test/libsolidity/semanticTests/inheritance/constructor_inheritance_init_order_3_legacy.sol @@ -8,5 +8,6 @@ contract B is A { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // x() -> 4 diff --git a/test/libsolidity/semanticTests/modifiers/function_modifier_loop.sol b/test/libsolidity/semanticTests/modifiers/function_modifier_loop.sol index 2b2900223be7..7631167fc120 100644 --- a/test/libsolidity/semanticTests/modifiers/function_modifier_loop.sol +++ b/test/libsolidity/semanticTests/modifiers/function_modifier_loop.sol @@ -15,5 +15,6 @@ contract C { // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // f() -> 10 diff --git a/test/libsolidity/semanticTests/modifiers/function_modifier_multi_invocation.sol b/test/libsolidity/semanticTests/modifiers/function_modifier_multi_invocation.sol index f4e04480486f..3ddf41b71576 100644 --- a/test/libsolidity/semanticTests/modifiers/function_modifier_multi_invocation.sol +++ b/test/libsolidity/semanticTests/modifiers/function_modifier_multi_invocation.sol @@ -15,6 +15,7 @@ contract C { // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(bool): false -> 1 // f(bool): true -> 2 diff --git a/test/libsolidity/semanticTests/modifiers/function_modifier_multi_with_return.sol b/test/libsolidity/semanticTests/modifiers/function_modifier_multi_with_return.sol index 6058e35127b1..54d5d391eea0 100644 --- a/test/libsolidity/semanticTests/modifiers/function_modifier_multi_with_return.sol +++ b/test/libsolidity/semanticTests/modifiers/function_modifier_multi_with_return.sol @@ -18,6 +18,7 @@ contract C { // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(bool): false -> 1 // f(bool): true -> 2 diff --git a/test/libsolidity/semanticTests/operators/shifts/shift_bytes_cleanup.sol b/test/libsolidity/semanticTests/operators/shifts/shift_bytes_cleanup.sol index e8f7d07476ba..25c5ed316e7a 100644 --- a/test/libsolidity/semanticTests/operators/shifts/shift_bytes_cleanup.sol +++ b/test/libsolidity/semanticTests/operators/shifts/shift_bytes_cleanup.sol @@ -14,6 +14,7 @@ contract C { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // l(uint8): 64 -> 0x3930313233343536373839300000000000000000000000000000000000000000 // r(uint8): 64 -> 0x313233343536373839303132000000000000000000000000 diff --git a/test/libsolidity/semanticTests/operators/shifts/shift_right_garbled_signed_v1.sol b/test/libsolidity/semanticTests/operators/shifts/shift_right_garbled_signed_v1.sol index 094d75b68388..e8c2dbeee7f1 100644 --- a/test/libsolidity/semanticTests/operators/shifts/shift_right_garbled_signed_v1.sol +++ b/test/libsolidity/semanticTests/operators/shifts/shift_right_garbled_signed_v1.sol @@ -19,6 +19,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(int8,uint8): 0x00, 0x03 -> 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe // f(int8,uint8): 0x00, 0x04 -> 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/test/libsolidity/semanticTests/operators/shifts/shift_right_garbled_v1.sol b/test/libsolidity/semanticTests/operators/shifts/shift_right_garbled_v1.sol index 8412e372bb33..3ce049e7c556 100644 --- a/test/libsolidity/semanticTests/operators/shifts/shift_right_garbled_v1.sol +++ b/test/libsolidity/semanticTests/operators/shifts/shift_right_garbled_v1.sol @@ -11,6 +11,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(uint8,uint8): 0x00, 0x04 -> 0x0f // f(uint8,uint8): 0x00, 0x1004 -> 0x0f diff --git a/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int16_v1.sol b/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int16_v1.sol index 0b8d0e833f2d..669011f5d433 100644 --- a/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int16_v1.sol +++ b/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int16_v1.sol @@ -7,6 +7,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(int16,uint16): 0xff99, 0x00 -> 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99 // f(int16,uint16): 0xff99, 0x01 -> 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc diff --git a/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int32_v1.sol b/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int32_v1.sol index a6b6378c6576..8f61c97409e3 100644 --- a/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int32_v1.sol +++ b/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int32_v1.sol @@ -7,6 +7,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(int32,uint32): 0xffffff99, 0x00 -> 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99 // f(int32,uint32): 0xffffff99, 0x01 -> 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc diff --git a/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int8_v1.sol b/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int8_v1.sol index 52529a85c929..c69e9dc50249 100644 --- a/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int8_v1.sol +++ b/test/libsolidity/semanticTests/operators/shifts/shift_right_negative_lvalue_signextend_int8_v1.sol @@ -7,6 +7,7 @@ contract C { // ==== // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(int8,uint8): 0x99, 0x00 -> 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99 // f(int8,uint8): 0x99, 0x01 -> 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc diff --git a/test/libsolidity/semanticTests/revertStrings/calldata_too_short_v1.sol b/test/libsolidity/semanticTests/revertStrings/calldata_too_short_v1.sol index 4677d350f68c..ffdfca195a3e 100644 --- a/test/libsolidity/semanticTests/revertStrings/calldata_too_short_v1.sol +++ b/test/libsolidity/semanticTests/revertStrings/calldata_too_short_v1.sol @@ -9,5 +9,6 @@ contract C { // revertStrings: debug // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // d(bytes): 0x20, 0x01, 0x0000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"08c379a0", 0x20, 18, "Calldata too short" diff --git a/test/libsolidity/semanticTests/revertStrings/empty_v1.sol b/test/libsolidity/semanticTests/revertStrings/empty_v1.sol index b9658c794de9..a5a0fc4c794b 100644 --- a/test/libsolidity/semanticTests/revertStrings/empty_v1.sol +++ b/test/libsolidity/semanticTests/revertStrings/empty_v1.sol @@ -12,6 +12,7 @@ contract C { // EVMVersion: >=byzantium // revertStrings: debug // compileViaYul: false +// bytecodeFormat: legacy // ---- // f() -> FAILURE, hex"08c379a0", 0x20, 0 // g(string): 0x20, 0, "" -> FAILURE, hex"08c379a0", 0x20, 0 diff --git a/test/libsolidity/semanticTests/revertStrings/enum_v1.sol b/test/libsolidity/semanticTests/revertStrings/enum_v1.sol index 305e43a573f7..9796db771604 100644 --- a/test/libsolidity/semanticTests/revertStrings/enum_v1.sol +++ b/test/libsolidity/semanticTests/revertStrings/enum_v1.sol @@ -10,5 +10,6 @@ contract C { // revertStrings: debug // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(uint8[]): 0x20, 2, 3, 3 -> FAILURE, hex"08c379a0", 0x20, 17, "Enum out of range" diff --git a/test/libsolidity/semanticTests/revertStrings/function_entry_checks_v1.sol b/test/libsolidity/semanticTests/revertStrings/function_entry_checks_v1.sol index 13c3d8542bd4..425c591beebf 100644 --- a/test/libsolidity/semanticTests/revertStrings/function_entry_checks_v1.sol +++ b/test/libsolidity/semanticTests/revertStrings/function_entry_checks_v1.sol @@ -7,5 +7,6 @@ contract C { // ABIEncoderV1Only: true // revertStrings: debug // compileViaYul: false +// bytecodeFormat: legacy // ---- // t(uint256) -> FAILURE, hex"08c379a0", 0x20, 0x12, "Calldata too short" diff --git a/test/libsolidity/semanticTests/revertStrings/invalid_abi_decoding_calldata_v1.sol b/test/libsolidity/semanticTests/revertStrings/invalid_abi_decoding_calldata_v1.sol index 41cd0f4d26b1..c30c572af752 100644 --- a/test/libsolidity/semanticTests/revertStrings/invalid_abi_decoding_calldata_v1.sol +++ b/test/libsolidity/semanticTests/revertStrings/invalid_abi_decoding_calldata_v1.sol @@ -9,6 +9,7 @@ contract C { // revertStrings: debug // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // d(bytes): 0x20, 0x20, 0x0000000000000000000000000000000000000000000000000000000000000000 -> 0 // d(bytes): 0x100, 0x20, 0x0000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"08c379a0", 0x20, 43, "ABI calldata decoding: invalid h", "ead pointer" diff --git a/test/libsolidity/semanticTests/revertStrings/invalid_abi_decoding_memory_v1.sol b/test/libsolidity/semanticTests/revertStrings/invalid_abi_decoding_memory_v1.sol index af9d822dd6eb..97464a08c222 100644 --- a/test/libsolidity/semanticTests/revertStrings/invalid_abi_decoding_memory_v1.sol +++ b/test/libsolidity/semanticTests/revertStrings/invalid_abi_decoding_memory_v1.sol @@ -17,6 +17,7 @@ contract C { // revertStrings: debug // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(uint256,uint256,uint256): 0, 0x200, 0x60 -> FAILURE, hex"08c379a0", 0x20, 39, "ABI memory decoding: invalid dat", "a start" // f(uint256,uint256,uint256): 0, 0x20, 0x60 -> FAILURE, hex"08c379a0", 0x20, 40, "ABI memory decoding: invalid dat", "a length" diff --git a/test/libsolidity/semanticTests/types/mapping_enum_key_getter_v1.sol b/test/libsolidity/semanticTests/types/mapping_enum_key_getter_v1.sol index b34ef779868c..df5c07d72e58 100644 --- a/test/libsolidity/semanticTests/types/mapping_enum_key_getter_v1.sol +++ b/test/libsolidity/semanticTests/types/mapping_enum_key_getter_v1.sol @@ -13,6 +13,7 @@ contract test { // ABIEncoderV1Only: true // EVMVersion: >=byzantium // compileViaYul: false +// bytecodeFormat: legacy // ---- // table(uint8): 0 -> 0 // table(uint8): 0x01 -> 0 diff --git a/test/libsolidity/semanticTests/types/mapping_enum_key_library_v1.sol b/test/libsolidity/semanticTests/types/mapping_enum_key_library_v1.sol index 798ef812aafc..f5f54ea500d3 100644 --- a/test/libsolidity/semanticTests/types/mapping_enum_key_library_v1.sol +++ b/test/libsolidity/semanticTests/types/mapping_enum_key_library_v1.sol @@ -21,6 +21,7 @@ contract test { // EVMVersion: >=byzantium // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // library: L // get(uint8): 0 -> 0 diff --git a/test/libsolidity/semanticTests/types/mapping_enum_key_v1.sol b/test/libsolidity/semanticTests/types/mapping_enum_key_v1.sol index 934ce7d111c2..0a18d5e26dd7 100644 --- a/test/libsolidity/semanticTests/types/mapping_enum_key_v1.sol +++ b/test/libsolidity/semanticTests/types/mapping_enum_key_v1.sol @@ -13,6 +13,7 @@ contract test { // EVMVersion: >=byzantium // ABIEncoderV1Only: true // compileViaYul: false +// bytecodeFormat: legacy // ---- // get(uint8): 0 -> 0 // get(uint8): 0x01 -> 0 diff --git a/test/libsolidity/semanticTests/uninitializedFunctionPointer/uninitialized_internal_storage_function_legacy.sol b/test/libsolidity/semanticTests/uninitializedFunctionPointer/uninitialized_internal_storage_function_legacy.sol index 1e5f96465ef1..cd55eab6f458 100644 --- a/test/libsolidity/semanticTests/uninitializedFunctionPointer/uninitialized_internal_storage_function_legacy.sol +++ b/test/libsolidity/semanticTests/uninitializedFunctionPointer/uninitialized_internal_storage_function_legacy.sol @@ -13,5 +13,6 @@ contract Test { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // f() -> true diff --git a/test/libsolidity/semanticTests/userDefinedValueType/assembly_access_bytes2_abicoder_v1.sol b/test/libsolidity/semanticTests/userDefinedValueType/assembly_access_bytes2_abicoder_v1.sol index f41a9205def2..b854f3c14b28 100644 --- a/test/libsolidity/semanticTests/userDefinedValueType/assembly_access_bytes2_abicoder_v1.sol +++ b/test/libsolidity/semanticTests/userDefinedValueType/assembly_access_bytes2_abicoder_v1.sol @@ -26,6 +26,7 @@ contract C { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(bytes2): "ab" -> 0x6162000000000000000000000000000000000000000000000000000000000000 // g(bytes2): "ab" -> 0x6162000000000000000000000000000000000000000000000000000000000000 diff --git a/test/libsolidity/semanticTests/userDefinedValueType/cleanup_abicoderv1.sol b/test/libsolidity/semanticTests/userDefinedValueType/cleanup_abicoderv1.sol index 727c66063333..577f5519315a 100644 --- a/test/libsolidity/semanticTests/userDefinedValueType/cleanup_abicoderv1.sol +++ b/test/libsolidity/semanticTests/userDefinedValueType/cleanup_abicoderv1.sol @@ -35,6 +35,7 @@ contract C { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // ret() -> 0xff // f(uint8): 0x1ff -> 0xff diff --git a/test/libsolidity/semanticTests/userDefinedValueType/conversion_abicoderv1.sol b/test/libsolidity/semanticTests/userDefinedValueType/conversion_abicoderv1.sol index e8fbfb246036..19ab1c3b44cf 100644 --- a/test/libsolidity/semanticTests/userDefinedValueType/conversion_abicoderv1.sol +++ b/test/libsolidity/semanticTests/userDefinedValueType/conversion_abicoderv1.sol @@ -29,6 +29,7 @@ contract C { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // f(uint256): 1 -> 1 // f(uint256): 2 -> 2 diff --git a/test/libsolidity/semanticTests/various/negative_stack_height.sol b/test/libsolidity/semanticTests/various/negative_stack_height.sol index 44fd0089cf70..2d0b5fd942b9 100644 --- a/test/libsolidity/semanticTests/various/negative_stack_height.sol +++ b/test/libsolidity/semanticTests/various/negative_stack_height.sol @@ -63,6 +63,7 @@ contract C { // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // constructor() -> // gas legacy: 92268 diff --git a/test/libsolidity/syntaxTests/array/nested_calldata_storage.sol b/test/libsolidity/syntaxTests/array/nested_calldata_storage.sol index e9ef53842c81..308b6ca0c2bb 100644 --- a/test/libsolidity/syntaxTests/array/nested_calldata_storage.sol +++ b/test/libsolidity/syntaxTests/array/nested_calldata_storage.sol @@ -7,5 +7,6 @@ contract C { // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // UnimplementedFeatureError 1834: (35-127): Copying nested calldata dynamic arrays to storage is not implemented in the old code generator. diff --git a/test/libsolidity/syntaxTests/array/nested_calldata_storage2.sol b/test/libsolidity/syntaxTests/array/nested_calldata_storage2.sol index 5db87f0d4edb..5b7a201f5d36 100644 --- a/test/libsolidity/syntaxTests/array/nested_calldata_storage2.sol +++ b/test/libsolidity/syntaxTests/array/nested_calldata_storage2.sol @@ -7,5 +7,6 @@ contract C { // ==== // compileViaYul: false +// bytecodeFormat: legacy // ---- // UnimplementedFeatureError 1834: (35-125): Copying nested calldata dynamic arrays to storage is not implemented in the old code generator. diff --git a/test/libsolidity/syntaxTests/inlineAssembly/assignment_from_library.sol b/test/libsolidity/syntaxTests/inlineAssembly/assignment_from_library.sol index 801bdd7eea18..4f549b835056 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/assignment_from_library.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/assignment_from_library.sol @@ -10,4 +10,5 @@ contract C { } // ==== // compileViaYul: false +// bytecodeFormat: legacy // ----