1
0
Эх сурвалжийг харах

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.
Brad King 7 жил өмнө
parent
commit
dd5c54600b

+ 2 - 6
Source/cmExprParserHelper.cxx

@@ -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;
   }