mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-08 15:19:51 -05:00
cmExprParserHelper: Simplify error state tracking
Errors always have explanation strings, so use the presence of such a string to track whether an error has occurred. This avoids an extra variable.
This commit is contained in:
@@ -39,10 +39,9 @@ int cmExprParserHelper::ParseString(const char* str, int verb)
|
||||
yyscan_t yyscanner;
|
||||
cmExpr_yylex_init(&yyscanner);
|
||||
cmExpr_yyset_extra(this, yyscanner);
|
||||
int res;
|
||||
|
||||
try {
|
||||
res = cmExpr_yyparse(yyscanner);
|
||||
int res = cmExpr_yyparse(yyscanner);
|
||||
if (res != 0) {
|
||||
std::string e = "cannot parse the expression: \"" + InputBuffer + "\": ";
|
||||
e += ErrorString;
|
||||
@@ -55,19 +54,16 @@ int cmExprParserHelper::ParseString(const char* str, int verb)
|
||||
e += fail.what();
|
||||
e += ".";
|
||||
this->SetError(std::move(e));
|
||||
res = 1;
|
||||
} catch (std::out_of_range const&) {
|
||||
std::string e = "cannot evaluate the expression: \"" + InputBuffer +
|
||||
"\": a numeric value is out of range.";
|
||||
this->SetError(std::move(e));
|
||||
res = 1;
|
||||
} catch (...) {
|
||||
std::string e = "cannot parse the expression: \"" + InputBuffer + "\".";
|
||||
this->SetError(std::move(e));
|
||||
res = 1;
|
||||
}
|
||||
cmExpr_yylex_destroy(yyscanner);
|
||||
if (res != 0) {
|
||||
if (!this->ErrorString.empty()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user