diff options
author | Adrian Prantl <aprantl@apple.com> | 2014-01-03 21:49:09 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2014-01-03 21:49:09 +0000 |
commit | 81e5cd9e732f8052e13e08d3a199b18f0c29ed1a (patch) | |
tree | 0d12ff24473bcea7c66adf75dae606d916e3d53b | |
parent | 1b101ef36430e0294b8ca422dbb7277ee45986b6 (diff) | |
download | bcm5719-llvm-81e5cd9e732f8052e13e08d3a199b18f0c29ed1a.tar.gz bcm5719-llvm-81e5cd9e732f8052e13e08d3a199b18f0c29ed1a.zip |
FileCheck: Print a nice error message for missing closing ']' in regex vars.
llvm-svn: 198449
-rw-r--r-- | llvm/utils/FileCheck/FileCheck.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/llvm/utils/FileCheck/FileCheck.cpp b/llvm/utils/FileCheck/FileCheck.cpp index 893e83d61c2..d33db18cb86 100644 --- a/llvm/utils/FileCheck/FileCheck.cpp +++ b/llvm/utils/FileCheck/FileCheck.cpp @@ -154,7 +154,7 @@ private: /// (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 @@ bool Pattern::ParsePattern(StringRef PatternStr, 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 @@ void Pattern::PrintFailureInfo(const SourceMgr &SM, StringRef Buffer, } } -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 @@ size_t Pattern::FindRegexVarEnd(StringRef Str) { 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; } |