Skip to content

Commit 41087f3

Browse files
author
Leo Alt
committed
Add CLI and JSON option to show unproved targets
1 parent 685d7a8 commit 41087f3

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

libsolidity/interface/StandardCompiler.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ std::optional<Json::Value> checkSettingsKeys(Json::Value const& _input)
442442

443443
std::optional<Json::Value> checkModelCheckerSettingsKeys(Json::Value const& _input)
444444
{
445-
static set<string> keys{"contracts", "engine", "solvers", "targets", "timeout"};
445+
static set<string> keys{"contracts", "engine", "showUnproved", "solvers", "targets", "timeout"};
446446
return checkKeys(_input, keys, "modelChecker");
447447
}
448448

@@ -951,6 +951,14 @@ std::variant<StandardCompiler::InputsAndSettings, Json::Value> StandardCompiler:
951951
ret.modelCheckerSettings.engine = *engine;
952952
}
953953

954+
if (modelCheckerSettings.isMember("showUnproved"))
955+
{
956+
auto const& showUnproved = modelCheckerSettings["showUnproved"];
957+
if (!showUnproved.isBool())
958+
return formatFatalError("JSONError", "settings.modelChecker.showUnproved must be a Boolean value.");
959+
ret.modelCheckerSettings.showUnproved = showUnproved.asBool();
960+
}
961+
954962
if (modelCheckerSettings.isMember("solvers"))
955963
{
956964
auto const& solversArray = modelCheckerSettings["solvers"];

solc/CommandLineParser.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ static string const g_strMetadataHash = "metadata-hash";
8787
static string const g_strMetadataLiteral = "metadata-literal";
8888
static string const g_strModelCheckerContracts = "model-checker-contracts";
8989
static string const g_strModelCheckerEngine = "model-checker-engine";
90+
static string const g_strModelCheckerShowUnproved = "model-checker-show-unproved";
9091
static string const g_strModelCheckerSolvers = "model-checker-solvers";
9192
static string const g_strModelCheckerTargets = "model-checker-targets";
9293
static string const g_strModelCheckerTimeout = "model-checker-timeout";
@@ -724,6 +725,11 @@ General Information)").c_str(),
724725
po::value<string>()->value_name("all,bmc,chc,none")->default_value("none"),
725726
"Select model checker engine."
726727
)
728+
(
729+
g_strModelCheckerShowUnproved.c_str(),
730+
po::value<bool>()->value_name("false,true")->default_value(false),
731+
"Select whether to show all unproved targets."
732+
)
727733
(
728734
g_strModelCheckerSolvers.c_str(),
729735
po::value<string>()->value_name("all,cvc4,z3,smtlib2")->default_value("all"),
@@ -1098,6 +1104,12 @@ General Information)").c_str(),
10981104
m_options.modelChecker.settings.engine = *engine;
10991105
}
11001106

1107+
if (m_args.count(g_strModelCheckerShowUnproved))
1108+
{
1109+
bool showUnproved = m_args[g_strModelCheckerShowUnproved].as<bool>();
1110+
m_options.modelChecker.settings.showUnproved = showUnproved;
1111+
}
1112+
11011113
if (m_args.count(g_strModelCheckerSolvers))
11021114
{
11031115
string solversStr = m_args[g_strModelCheckerSolvers].as<string>();
@@ -1129,6 +1141,7 @@ General Information)").c_str(),
11291141
m_options.modelChecker.initialize =
11301142
m_args.count(g_strModelCheckerContracts) ||
11311143
m_args.count(g_strModelCheckerEngine) ||
1144+
m_args.count(g_strModelCheckerShowUnproved) ||
11321145
m_args.count(g_strModelCheckerSolvers) ||
11331146
m_args.count(g_strModelCheckerTargets) ||
11341147
m_args.count(g_strModelCheckerTimeout);

0 commit comments

Comments
 (0)