From 964ac012017451ff24c33e6b749ec3223e1d291a Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sun, 22 Nov 2009 22:07:50 +0000 Subject: [PATCH] Allow '_' in FileCheck variable names, it is nice to have at least one separate character. - Chris, OK? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89626 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/CommandGuide/FileCheck.pod | 2 +- utils/FileCheck/FileCheck.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/CommandGuide/FileCheck.pod b/docs/CommandGuide/FileCheck.pod index d3f640d64dc..32516ad87b3 100644 --- a/docs/CommandGuide/FileCheck.pod +++ b/docs/CommandGuide/FileCheck.pod @@ -224,7 +224,7 @@ The first check line matches a regex (%[a-z]+) and captures it into the variables "REGISTER". The second line verifies that whatever is in REGISTER occurs later in the file after an "andw". FileCheck variable references are always contained in [[ ]] pairs, are named, and their names can be -formed with the regex "[a-zA-Z][a-zA-Z0-9]*". If a colon follows the +formed with the regex "[a-zA-Z_][a-zA-Z0-9_]*". If a colon follows the name, then it is a definition of the variable, if not, it is a use. FileCheck variables can be defined multiple times, and uses always get the diff --git a/utils/FileCheck/FileCheck.cpp b/utils/FileCheck/FileCheck.cpp index b4d1f84859c..2bd6197e133 100644 --- a/utils/FileCheck/FileCheck.cpp +++ b/utils/FileCheck/FileCheck.cpp @@ -140,7 +140,7 @@ bool Pattern::ParsePattern(StringRef PatternStr, SourceMgr &SM) { // Named RegEx matches. These are of two forms: [[foo:.*]] which matches .* // (or some other regex) and assigns it to the FileCheck variable 'foo'. The // second form is [[foo]] which is a reference to foo. The variable name - // itself must be of the form "[a-zA-Z][0-9a-zA-Z]*", otherwise we reject + // itself must be of the form "[a-zA-Z_][0-9a-zA-Z_]*", otherwise we reject // it. This is to catch some common errors. if (PatternStr.size() >= 2 && PatternStr[0] == '[' && PatternStr[1] == '[') { @@ -167,7 +167,8 @@ bool Pattern::ParsePattern(StringRef PatternStr, SourceMgr &SM) { // Verify that the name is well formed. for (unsigned i = 0, e = Name.size(); i != e; ++i) - if ((Name[i] < 'a' || Name[i] > 'z') && + if (Name[i] != '_' && + (Name[i] < 'a' || Name[i] > 'z') && (Name[i] < 'A' || Name[i] > 'Z') && (Name[i] < '0' || Name[i] > '9')) { SM.PrintMessage(SMLoc::getFromPointer(Name.data()+i),