ExpressionFormat::valueFromStringRepr(StringRef StrVal,
const SourceMgr &SM) const {
bool ValueIsSigned = Value == Kind::Signed;
- StringRef OverflowErrorStr = "unable to represent numeric value";
+ // Both the FileCheck utility and library only call this method with a valid
+ // value in StrVal. This is guaranteed by the regex returned by
+ // getWildcardRegex() above. Only underflow and overflow errors can thus
+ // occur. However new uses of this method could be added in the future so
+ // the error message does not make assumptions about StrVal.
+ StringRef IntegerParseErrorStr = "unable to represent numeric value";
if (ValueIsSigned) {
int64_t SignedValue;
if (StrVal.getAsInteger(10, SignedValue))
- return ErrorDiagnostic::get(SM, StrVal, OverflowErrorStr);
+ return ErrorDiagnostic::get(SM, StrVal, IntegerParseErrorStr);
return ExpressionValue(SignedValue);
}
bool Hex = Value == Kind::HexUpper || Value == Kind::HexLower;
uint64_t UnsignedValue;
if (StrVal.getAsInteger(Hex ? 16 : 10, UnsignedValue))
- return ErrorDiagnostic::get(SM, StrVal, OverflowErrorStr);
+ return ErrorDiagnostic::get(SM, StrVal, IntegerParseErrorStr);
return ExpressionValue(UnsignedValue);
}