Fix internal error when the abstract-nondet SMTChecker natspec annotation is used with a wrong option multiple times for the same function

This commit is contained in:
Leo Alt
2022-11-28 16:59:35 +01:00
parent 4baeddc62b
commit a5dab6181c
3 changed files with 16 additions and 1 deletions
+5 -1
View File
@@ -1102,14 +1102,18 @@ set<CHC::CHCNatspecOption> CHC::smtNatspecTags(FunctionDefinition const& _functi
{
set<CHC::CHCNatspecOption> options;
string smtStr = "custom:smtchecker";
bool errorSeen = false;
for (auto const& [tag, value]: _function.annotation().docTags)
if (tag == smtStr)
{
string const& content = value.content;
if (auto option = natspecOptionFromString(content))
options.insert(*option);
else
else if (!errorSeen)
{
errorSeen = true;
m_errorReporter.warning(3130_error, _function.location(), "Unknown option for \"" + smtStr + "\": \"" + content + "\"");
}
}
return options;
}