Skip to content

Commit 6624d4f

Browse files
committed
EVMVersion::allVersions is constexpr
1 parent 0b25230 commit 6624d4f

File tree

3 files changed

+20
-21
lines changed

3 files changed

+20
-21
lines changed

liblangutil/EVMVersion.h

+18-19
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
#include <cstdint>
2828
#include <optional>
2929
#include <string>
30-
#include <vector>
3130

3231

3332
namespace solidity::evmasm
@@ -50,23 +49,23 @@ class EVMVersion
5049

5150
static EVMVersion current() { return {currentVersion}; }
5251

53-
static EVMVersion homestead() { return {Version::Homestead}; }
54-
static EVMVersion tangerineWhistle() { return {Version::TangerineWhistle}; }
55-
static EVMVersion spuriousDragon() { return {Version::SpuriousDragon}; }
56-
static EVMVersion byzantium() { return {Version::Byzantium}; }
57-
static EVMVersion constantinople() { return {Version::Constantinople}; }
58-
static EVMVersion petersburg() { return {Version::Petersburg}; }
59-
static EVMVersion istanbul() { return {Version::Istanbul}; }
60-
static EVMVersion berlin() { return {Version::Berlin}; }
61-
static EVMVersion london() { return {Version::London}; }
62-
static EVMVersion paris() { return {Version::Paris}; }
63-
static EVMVersion shanghai() { return {Version::Shanghai}; }
64-
static EVMVersion cancun() { return {Version::Cancun}; }
65-
static EVMVersion prague() { return {Version::Prague}; }
66-
static EVMVersion osaka() { return {Version::Osaka}; }
67-
68-
static std::vector<EVMVersion> allVersions() {
69-
return {
52+
static EVMVersion constexpr homestead() { return {Version::Homestead}; }
53+
static EVMVersion constexpr tangerineWhistle() { return {Version::TangerineWhistle}; }
54+
static EVMVersion constexpr spuriousDragon() { return {Version::SpuriousDragon}; }
55+
static EVMVersion constexpr byzantium() { return {Version::Byzantium}; }
56+
static EVMVersion constexpr constantinople() { return {Version::Constantinople}; }
57+
static EVMVersion constexpr petersburg() { return {Version::Petersburg}; }
58+
static EVMVersion constexpr istanbul() { return {Version::Istanbul}; }
59+
static EVMVersion constexpr berlin() { return {Version::Berlin}; }
60+
static EVMVersion constexpr london() { return {Version::London}; }
61+
static EVMVersion constexpr paris() { return {Version::Paris}; }
62+
static EVMVersion constexpr shanghai() { return {Version::Shanghai}; }
63+
static EVMVersion constexpr cancun() { return {Version::Cancun}; }
64+
static EVMVersion constexpr prague() { return {Version::Prague}; }
65+
static EVMVersion constexpr osaka() { return {Version::Osaka}; }
66+
67+
static auto constexpr allVersions() {
68+
return std::array{
7069
homestead(),
7170
tangerineWhistle(),
7271
spuriousDragon(),
@@ -172,7 +171,7 @@ class EVMVersion
172171
};
173172
static auto constexpr currentVersion = Version::Cancun;
174173

175-
EVMVersion(Version _version): m_version(_version) {}
174+
constexpr EVMVersion(Version _version): m_version(_version) {}
176175

177176
Version m_version = currentVersion;
178177
};

solc/CommandLineParser.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ General Information)").c_str(),
596596
auto const annotateEVMVersion = [](EVMVersion const& _version) {
597597
return _version.name() + (_version.isExperimental() ? " (experimental)" : "");
598598
};
599-
std::vector<EVMVersion> allEVMVersions = EVMVersion::allVersions();
599+
static auto constexpr allEVMVersions = EVMVersion::allVersions();
600600
std::string annotatedEVMVersions = util::joinHumanReadable(
601601
allEVMVersions | ranges::views::transform(annotateEVMVersion),
602602
", ",

test/tools/fuzzer_common.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ using namespace solidity::frontend;
3939
using namespace solidity::langutil;
4040
using namespace solidity::util;
4141

42-
static std::vector<EVMVersion> s_evmVersions = EVMVersion::allVersions();
42+
static auto constexpr s_evmVersions = EVMVersion::allVersions();
4343

4444
void FuzzerUtil::testCompilerJsonInterface(std::string const& _input, bool _optimize, bool _quiet)
4545
{

0 commit comments

Comments
 (0)