mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-10-04 04:03:22 +03: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:
1 parent
185bcface4
commit
dd5c54600b
1 file changed
+2
-6
@@ -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