Summary:
Fix a case when "FileCheck --check-prefix=CHECK --check-prefix=CHECKER"
would silently ignore check-lines of the form:
CHECKER: foo
Reviewers: dsanders
Reviewed By: dsanders
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2168
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194577
91177308-0d34-0410-b5e6-
96231b3b80d8
--- /dev/null
+// RUN: FileCheck -check-prefix=CHECKER -check-prefix=CHECK -input-file %s %s
+// RUN: FileCheck -check-prefix=CHECK -check-prefix=CHECKER -input-file %s %s
+
+foo
+; CHECKER: fo{{o}}
// We only want to find the first match to avoid skipping some.
if (PrefixLoc > FirstLoc)
continue;
// We only want to find the first match to avoid skipping some.
if (PrefixLoc > FirstLoc)
continue;
+ // If one matching check-prefix is a prefix of another, choose the
+ // longer one.
+ if (PrefixLoc == FirstLoc && Prefix.size() < FirstPrefix.size())
+ continue;
StringRef Rest = Buffer.drop_front(PrefixLoc);
// Make sure we have actually found the prefix, and not a word containing
StringRef Rest = Buffer.drop_front(PrefixLoc);
// Make sure we have actually found the prefix, and not a word containing
if (PrefixLoc != 0 && IsPartOfWord(Buffer[PrefixLoc - 1]))
continue;
if (PrefixLoc != 0 && IsPartOfWord(Buffer[PrefixLoc - 1]))
continue;
- Check::CheckType Ty = FindCheckType(Rest, Prefix);
-
- FirstTy = Ty;
- // We've found the first matching check prefix. If it is invalid, we should
- // continue the search after it.
- FirstPrefix = (Ty == Check::CheckNone) ? "" : Prefix;
+ FirstTy = FindCheckType(Rest, Prefix);
+ FirstPrefix = Prefix;
- if (FirstPrefix.empty()) {
+ // If the first prefix is invalid, we should continue the search after it.
+ if (FirstTy == Check::CheckNone) {
- } else {
- CheckTy = FirstTy;
- CheckLoc = FirstLoc;
+ CheckTy = FirstTy;
+ CheckLoc = FirstLoc;