Merge pull request #8889 from ethereum/boost-variant

Replace boost:variant with std::variant in StandardCompiler
This commit is contained in:
chriseth 2020-05-11 13:51:42 +02:00 committed by GitHub
commit 3c78696ca5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 11 deletions

View File

@ -32,7 +32,7 @@
#include <libsolutil/Keccak256.h> #include <libsolutil/Keccak256.h>
#include <boost/algorithm/cxx11/any_of.hpp> #include <boost/algorithm/cxx11/any_of.hpp>
#include <boost/algorithm/string.hpp> #include <boost/algorithm/string/predicate.hpp>
#include <algorithm> #include <algorithm>
#include <optional> #include <optional>
@ -491,7 +491,7 @@ std::optional<Json::Value> checkOutputSelection(Json::Value const& _outputSelect
} }
/// Validates the optimizer settings and returns them in a parsed object. /// Validates the optimizer settings and returns them in a parsed object.
/// On error returns the json-formatted error message. /// On error returns the json-formatted error message.
boost::variant<OptimiserSettings, Json::Value> parseOptimizerSettings(Json::Value const& _jsonInput) std::variant<OptimiserSettings, Json::Value> parseOptimizerSettings(Json::Value const& _jsonInput)
{ {
if (auto result = checkOptimizerKeys(_jsonInput)) if (auto result = checkOptimizerKeys(_jsonInput))
return *result; return *result;
@ -552,7 +552,7 @@ boost::variant<OptimiserSettings, Json::Value> parseOptimizerSettings(Json::Valu
} }
boost::variant<StandardCompiler::InputsAndSettings, Json::Value> StandardCompiler::parseInput(Json::Value const& _input) std::variant<StandardCompiler::InputsAndSettings, Json::Value> StandardCompiler::parseInput(Json::Value const& _input)
{ {
InputsAndSettings ret; InputsAndSettings ret;
@ -740,10 +740,10 @@ boost::variant<StandardCompiler::InputsAndSettings, Json::Value> StandardCompile
if (settings.isMember("optimizer")) if (settings.isMember("optimizer"))
{ {
auto optimiserSettings = parseOptimizerSettings(settings["optimizer"]); auto optimiserSettings = parseOptimizerSettings(settings["optimizer"]);
if (optimiserSettings.type() == typeid(Json::Value)) if (std::holds_alternative<Json::Value>(optimiserSettings))
return boost::get<Json::Value>(std::move(optimiserSettings)); // was an error return std::get<Json::Value>(std::move(optimiserSettings)); // was an error
else else
ret.optimiserSettings = boost::get<OptimiserSettings>(std::move(optimiserSettings)); ret.optimiserSettings = std::get<OptimiserSettings>(std::move(optimiserSettings));
} }
Json::Value jsonLibraries = settings.get("libraries", Json::Value(Json::objectValue)); Json::Value jsonLibraries = settings.get("libraries", Json::Value(Json::objectValue));
@ -1155,9 +1155,9 @@ Json::Value StandardCompiler::compile(Json::Value const& _input) noexcept
try try
{ {
auto parsed = parseInput(_input); auto parsed = parseInput(_input);
if (parsed.type() == typeid(Json::Value)) if (std::holds_alternative<Json::Value>(parsed))
return boost::get<Json::Value>(std::move(parsed)); return std::get<Json::Value>(std::move(parsed));
InputsAndSettings settings = boost::get<InputsAndSettings>(std::move(parsed)); InputsAndSettings settings = std::get<InputsAndSettings>(std::move(parsed));
if (settings.language == "Solidity") if (settings.language == "Solidity")
return compileSolidity(std::move(settings)); return compileSolidity(std::move(settings));
else if (settings.language == "Yul") else if (settings.language == "Yul")

View File

@ -24,9 +24,9 @@
#include <libsolidity/interface/CompilerStack.h> #include <libsolidity/interface/CompilerStack.h>
#include <boost/variant.hpp>
#include <optional> #include <optional>
#include <utility> #include <utility>
#include <variant>
namespace solidity::frontend namespace solidity::frontend
{ {
@ -73,7 +73,7 @@ private:
/// Parses the input json (and potentially invokes the read callback) and either returns /// Parses the input json (and potentially invokes the read callback) and either returns
/// it in condensed form or an error as a json object. /// it in condensed form or an error as a json object.
boost::variant<InputsAndSettings, Json::Value> parseInput(Json::Value const& _input); std::variant<InputsAndSettings, Json::Value> parseInput(Json::Value const& _input);
Json::Value compileSolidity(InputsAndSettings _inputsAndSettings); Json::Value compileSolidity(InputsAndSettings _inputsAndSettings);
Json::Value compileYul(InputsAndSettings _inputsAndSettings); Json::Value compileYul(InputsAndSettings _inputsAndSettings);