FileCheck: Print a nice error message for missing closing ']' in regex vars.
llvm-svn: 198449
diff --git a/llvm/utils/FileCheck/FileCheck.cpp b/llvm/utils/FileCheck/FileCheck.cpp
index 893e83d..d33db18 100644
--- a/llvm/utils/FileCheck/FileCheck.cpp
+++ b/llvm/utils/FileCheck/FileCheck.cpp
@@ -154,7 +154,7 @@
/// (right after the opening sequence).
/// \return offset of the closing sequence within Str, or npos if it was not
/// found.
- size_t FindRegexVarEnd(StringRef Str);
+ size_t FindRegexVarEnd(StringRef Str, SourceMgr &SM);
};
@@ -227,7 +227,7 @@
if (PatternStr.startswith("[[")) {
// Find the closing bracket pair ending the match. End is going to be an
// offset relative to the beginning of the match string.
- size_t End = FindRegexVarEnd(PatternStr.substr(2));
+ size_t End = FindRegexVarEnd(PatternStr.substr(2), SM);
if (End == StringRef::npos) {
SM.PrintMessage(SMLoc::getFromPointer(PatternStr.data()),
@@ -532,7 +532,7 @@
}
}
-size_t Pattern::FindRegexVarEnd(StringRef Str) {
+size_t Pattern::FindRegexVarEnd(StringRef Str, SourceMgr &SM) {
// Offset keeps track of the current offset within the input Str
size_t Offset = 0;
// [...] Nesting depth
@@ -553,7 +553,12 @@
BracketDepth++;
break;
case ']':
- assert(BracketDepth > 0 && "Invalid regex");
+ if (BracketDepth == 0) {
+ SM.PrintMessage(SMLoc::getFromPointer(Str.data()),
+ SourceMgr::DK_Error,
+ "missing closing \"]\" for regex variable");
+ exit(1);
+ }
BracketDepth--;
break;
}