Skip to content

Commit 643a18e

Browse files
authored
Merge pull request #15618 from ethereum/test-common-options-evmdialect-method
Add test::CommonOptions::evmDialect method
2 parents cb07520 + a26b281 commit 643a18e

File tree

8 files changed

+37
-25
lines changed

8 files changed

+37
-25
lines changed

test/Common.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,25 @@
1616
*/
1717
// SPDX-License-Identifier: GPL-3.0
1818

19-
#include <stdexcept>
20-
#include <iostream>
2119
#include <test/Common.h>
20+
2221
#include <test/EVMHost.h>
2322
#include <test/libsolidity/util/SoltestErrors.h>
2423

24+
#include <libyul/backends/evm/EVMDialect.h>
25+
2526
#include <libsolutil/Assertions.h>
2627
#include <libsolutil/StringUtils.h>
28+
2729
#include <boost/algorithm/string.hpp>
2830
#include <boost/filesystem.hpp>
2931
#include <boost/program_options.hpp>
32+
3033
#include <range/v3/all.hpp>
3134

35+
#include <iostream>
36+
#include <stdexcept>
37+
3238
namespace fs = boost::filesystem;
3339
namespace po = boost::program_options;
3440

@@ -260,6 +266,12 @@ langutil::EVMVersion CommonOptions::evmVersion() const
260266
return langutil::EVMVersion();
261267
}
262268

269+
yul::EVMDialect const& CommonOptions::evmDialect() const
270+
{
271+
return yul::EVMDialect::strictAssemblyForEVMObjects(evmVersion(), eofVersion());
272+
}
273+
274+
263275
CommonOptions const& CommonOptions::get()
264276
{
265277
if (!m_singleton)

test/Common.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@
2929
#include <boost/program_options.hpp>
3030
#include <boost/test/unit_test.hpp>
3131

32+
namespace solidity::yul
33+
{
34+
class EVMDialect;
35+
}
36+
3237
namespace solidity::test
3338
{
3439

@@ -66,6 +71,7 @@ struct CommonOptions
6671

6772
langutil::EVMVersion evmVersion() const;
6873
std::optional<uint8_t> eofVersion() const { return m_eofVersion; }
74+
yul::EVMDialect const& evmDialect() const;
6975

7076
virtual void addOptions();
7177
// @returns true if the program should continue, false if it should exit immediately without

test/libsolidity/MemoryGuardTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ TestCase::TestResult MemoryGuardTest::run(std::ostream& _stream, std::string con
5959
m_obtainedResult.clear();
6060
for (std::string contractName: compiler().contractNames())
6161
{
62-
auto const& dialect = EVMDialect::strictAssemblyForEVMObjects(CommonOptions::get().evmVersion(), CommonOptions::get().eofVersion());
62+
auto const& dialect = CommonOptions::get().evmDialect();
6363
ErrorList errors;
6464
std::optional<std::string> const& ir = compiler().yulIR(contractName);
6565
solAssert(ir);

test/libyul/ControlFlowSideEffectsTest.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include <libyul/backends/evm/EVMDialect.h>
2929

3030
using namespace solidity;
31+
using namespace solidity::test;
3132
using namespace solidity::yul;
3233
using namespace solidity::yul::test;
3334
using namespace solidity::frontend::test;
@@ -56,12 +57,9 @@ ControlFlowSideEffectsTest::ControlFlowSideEffectsTest(std::string const& _filen
5657

5758
TestCase::TestResult ControlFlowSideEffectsTest::run(std::ostream& _stream, std::string const& _linePrefix, bool _formatted)
5859
{
59-
auto const& dialect = EVMDialect::strictAssemblyForEVMObjects(
60-
solidity::test::CommonOptions::get().evmVersion(),
61-
solidity::test::CommonOptions::get().eofVersion()
62-
);
60+
auto const& dialect = CommonOptions::get().evmDialect();
6361
Object obj;
64-
auto parsingResult = yul::test::parse(m_source);
62+
auto parsingResult = parse(m_source);
6563
obj.setCode(parsingResult.first, parsingResult.second);
6664
if (!obj.hasCode())
6765
BOOST_THROW_EXCEPTION(std::runtime_error("Parsing input failed."));

test/libyul/EVMCodeTransformTest.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include <libsolutil/AnsiColorized.h>
3333

3434
using namespace solidity;
35+
using namespace solidity::test;
3536
using namespace solidity::util;
3637
using namespace solidity::langutil;
3738
using namespace solidity::yul;
@@ -67,13 +68,12 @@ TestCase::TestResult EVMCodeTransformTest::run(std::ostream& _stream, std::strin
6768
return TestResult::FatalError;
6869
}
6970

70-
evmasm::Assembly assembly{solidity::test::CommonOptions::get().evmVersion(), false, std::nullopt, {}};
71+
evmasm::Assembly assembly{CommonOptions::get().evmVersion(), false, std::nullopt, {}};
7172
EthAssemblyAdapter adapter(assembly);
7273
EVMObjectCompiler::compile(
7374
*stack.parserResult(),
7475
adapter,
75-
EVMDialect::strictAssemblyForEVMObjects(solidity::test::CommonOptions::get().evmVersion(),
76-
solidity::test::CommonOptions::get().eofVersion()),
76+
CommonOptions::get().evmDialect(),
7777
m_stackOpt,
7878
std::nullopt
7979
);

test/libyul/FunctionSideEffects.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636

3737
using namespace solidity;
38+
using namespace solidity::test;
3839
using namespace solidity::util;
3940
using namespace solidity::langutil;
4041
using namespace solidity::yul;
@@ -83,12 +84,9 @@ FunctionSideEffects::FunctionSideEffects(std::string const& _filename):
8384

8485
TestCase::TestResult FunctionSideEffects::run(std::ostream& _stream, std::string const& _linePrefix, bool _formatted)
8586
{
86-
auto const& dialect = EVMDialect::strictAssemblyForEVMObjects(
87-
solidity::test::CommonOptions::get().evmVersion(),
88-
solidity::test::CommonOptions::get().eofVersion()
89-
);
87+
auto const& dialect = CommonOptions::get().evmDialect();
9088
Object obj;
91-
auto parsingResult = yul::test::parse(m_source);
89+
auto parsingResult = parse(m_source);
9290
obj.setCode(parsingResult.first, parsingResult.second);
9391
if (!obj.hasCode())
9492
BOOST_THROW_EXCEPTION(std::runtime_error("Parsing input failed."));

test/libyul/StackShufflingTest.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <liblangutil/Scanner.h>
2626
#include <libsolutil/AnsiColorized.h>
2727

28+
using namespace solidity::test;
2829
using namespace solidity::util;
2930
using namespace solidity::langutil;
3031
using namespace solidity::yul;
@@ -141,10 +142,7 @@ StackShufflingTest::StackShufflingTest(std::string const& _filename):
141142

142143
TestCase::TestResult StackShufflingTest::run(std::ostream& _stream, std::string const& _linePrefix, bool _formatted)
143144
{
144-
auto const& dialect = EVMDialect::strictAssemblyForEVMObjects(
145-
solidity::test::CommonOptions::get().evmVersion(),
146-
solidity::test::CommonOptions::get().eofVersion()
147-
);
145+
auto const& dialect = CommonOptions::get().evmDialect();
148146
if (!parse(m_source))
149147
{
150148
AnsiColorized(_stream, _formatted, {formatting::BOLD, formatting::RED}) << _linePrefix << "Error parsing source." << std::endl;

test/libyul/YulInterpreterTest.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include <fstream>
4040

4141
using namespace solidity;
42+
using namespace solidity::test;
4243
using namespace solidity::util;
4344
using namespace solidity::langutil;
4445
using namespace solidity::yul;
@@ -67,10 +68,10 @@ TestCase::TestResult YulInterpreterTest::run(std::ostream& _stream, std::string
6768
bool YulInterpreterTest::parse(std::ostream& _stream, std::string const& _linePrefix, bool const _formatted)
6869
{
6970
YulStack stack(
70-
solidity::test::CommonOptions::get().evmVersion(),
71-
solidity::test::CommonOptions::get().eofVersion(),
71+
CommonOptions::get().evmVersion(),
72+
CommonOptions::get().eofVersion(),
7273
YulStack::Language::StrictAssembly,
73-
solidity::frontend::OptimiserSettings::none(),
74+
OptimiserSettings::none(),
7475
DebugInfoSelection::All()
7576
);
7677
if (stack.parseAndAnalyze("", m_source))
@@ -98,8 +99,7 @@ std::string YulInterpreterTest::interpret()
9899
{
99100
Interpreter::run(
100101
state,
101-
EVMDialect::strictAssemblyForEVMObjects(solidity::test::CommonOptions::get().evmVersion(),
102-
solidity::test::CommonOptions::get().eofVersion()),
102+
CommonOptions::get().evmDialect(),
103103
m_ast->root(),
104104
/*disableExternalCalls=*/ !m_simulateExternalCallsToSelf,
105105
/*disableMemoryTracing=*/ false

0 commit comments

Comments
 (0)