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 | e2bc7c2439c37d883c22dd27c87301a4e2c935b3 (patch) | |
tree | 8c1ad64e923fb0f2eb9ddbf25940d508a427942d /utils | |
parent | ce89de231525a80c137a1de88fb8d0467c6ce973 (diff) | |
download | external_llvm-e2bc7c2439c37d883c22dd27c87301a4e2c935b3.zip external_llvm-e2bc7c2439c37d883c22dd27c87301a4e2c935b3.tar.gz external_llvm-e2bc7c2439c37d883c22dd27c87301a4e2c935b3.tar.bz2 |
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')
-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 1e6af37..8e63a99 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(); } |