diff options
author | Chris Lattner <sabre@nondot.org> | 2009-09-25 17:29:36 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-09-25 17:29:36 +0000 |
commit | 94638f0081b6ec8c7cc5ad9fec8ddbdd6824d90d (patch) | |
tree | 8c1ad64e923fb0f2eb9ddbf25940d508a427942d /utils/FileCheck/FileCheck.cpp | |
parent | 5d6a05f4d4faea0c0c96fbf2bb57655df2839b34 (diff) |
reject attempts to use ()'s in patterns, these are reserved for filecheck.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82780 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/FileCheck/FileCheck.cpp')
-rw-r--r-- | utils/FileCheck/FileCheck.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/utils/FileCheck/FileCheck.cpp b/utils/FileCheck/FileCheck.cpp index 1e6af371d8..8e63a9961a 100644 --- a/utils/FileCheck/FileCheck.cpp +++ b/utils/FileCheck/FileCheck.cpp @@ -45,6 +45,9 @@ NoCanonicalizeWhiteSpace("strict-whitespace", //===----------------------------------------------------------------------===// class Pattern { + SourceMgr *SM; + SMLoc PatternLoc; + /// FixedStr - If non-empty, this pattern is a fixed string match with the /// specified fixed string. StringRef FixedStr; @@ -67,6 +70,9 @@ private: }; bool Pattern::ParsePattern(StringRef PatternStr, SourceMgr &SM) { + this->SM = &SM; + PatternLoc = SMLoc::getFromPointer(PatternStr.data()); + // Ignore trailing whitespace. while (!PatternStr.empty() && (PatternStr.back() == ' ' || PatternStr.back() == '\t')) @@ -74,9 +80,8 @@ bool Pattern::ParsePattern(StringRef PatternStr, SourceMgr &SM) { // Check that there is something on the line. if (PatternStr.empty()) { - SM.PrintMessage(SMLoc::getFromPointer(PatternStr.data()), - "found empty check string with prefix '"+CheckPrefix+":'", - "error"); + SM.PrintMessage(PatternLoc, "found empty check string with prefix '" + + CheckPrefix+":'", "error"); return true; } @@ -170,6 +175,13 @@ size_t Pattern::Match(StringRef Buffer, size_t &MatchLen) const { assert(!MatchInfo.empty() && "Didn't get any match"); StringRef FullMatch = MatchInfo[0]; + + if (MatchInfo.size() != 1) { + SM->PrintMessage(PatternLoc, "regex cannot use grouping parens", "error"); + exit(1); + } + + MatchLen = FullMatch.size(); return FullMatch.data()-Buffer.data(); } |