[llvm] r355928 - [FileCheck]Remove assertions that prevent matching an empty string at file start before CHECK-NEXT/SAME

James Henderson via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 12 08:37:34 PDT 2019


Author: jhenderson
Date: Tue Mar 12 08:37:34 2019
New Revision: 355928

URL: http://llvm.org/viewvc/llvm-project?rev=355928&view=rev
Log:
[FileCheck]Remove assertions that prevent matching an empty string at file start before CHECK-NEXT/SAME

This patch removes two assertions that were preventing writing of a test
that checked an empty line followed by some text. For example:

CHECK: {{^$}}
CHECK-NEXT: foo()

The assertion was because the current location the CHECK-NEXT was
scanning from was the start of the buffer. A similar issue occurred with
CHECK-SAME. These assertions don't protect against anything, as there is
already an error check that checks that CHECK-NEXT/EMPTY/SAME don't
appear first in the checks, and the following code works fine if the
pointer is at the start of the input.

Reviewed by: probinson, thopre, jdenny
Differential Revision: https://reviews.llvm.org/D58784


Added:
    llvm/trunk/test/FileCheck/empty-regex-match-at-start.txt
Modified:
    llvm/trunk/lib/Support/FileCheck.cpp

Modified: llvm/trunk/lib/Support/FileCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/FileCheck.cpp?rev=355928&r1=355927&r2=355928&view=diff
==============================================================================
--- llvm/trunk/lib/Support/FileCheck.cpp (original)
+++ llvm/trunk/lib/Support/FileCheck.cpp Tue Mar 12 08:37:34 2019
@@ -1114,12 +1114,6 @@ bool FileCheckString::CheckNext(const So
       Twine(Pat.getCheckTy() == Check::CheckEmpty ? "-EMPTY" : "-NEXT");
 
   // Count the number of newlines between the previous match and this one.
-  assert(Buffer.data() !=
-             SM.getMemoryBuffer(SM.FindBufferContainingLoc(
-                                    SMLoc::getFromPointer(Buffer.data())))
-                 ->getBufferStart() &&
-         "CHECK-NEXT and CHECK-EMPTY can't be the first check in a file");
-
   const char *FirstNewLine = nullptr;
   unsigned NumNewLines = CountNumNewlinesBetween(Buffer, FirstNewLine);
 
@@ -1155,12 +1149,6 @@ bool FileCheckString::CheckSame(const So
     return false;
 
   // Count the number of newlines between the previous match and this one.
-  assert(Buffer.data() !=
-             SM.getMemoryBuffer(SM.FindBufferContainingLoc(
-                                    SMLoc::getFromPointer(Buffer.data())))
-                 ->getBufferStart() &&
-         "CHECK-SAME can't be the first check in a file");
-
   const char *FirstNewLine = nullptr;
   unsigned NumNewLines = CountNumNewlinesBetween(Buffer, FirstNewLine);
 

Added: llvm/trunk/test/FileCheck/empty-regex-match-at-start.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/FileCheck/empty-regex-match-at-start.txt?rev=355928&view=auto
==============================================================================
--- llvm/trunk/test/FileCheck/empty-regex-match-at-start.txt (added)
+++ llvm/trunk/test/FileCheck/empty-regex-match-at-start.txt Tue Mar 12 08:37:34 2019
@@ -0,0 +1,16 @@
+some text
+more text
+
+RUN: FileCheck %s --check-prefix=NEXT --input-file=%s
+NEXT:      {{^}}
+NEXT-NEXT: more text
+
+RUN: FileCheck %s --check-prefix=SAME --input-file=%s
+SAME:      {{^}}
+SAME-SAME: some text
+
+RUN: echo "" > %t
+RUN: echo "" >> %t
+RUN: FileCheck %s --check-prefix=EMPTY --input-file=%t
+EMPTY:       {{^}}
+EMPTY-EMPTY:




More information about the llvm-commits mailing list