mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
Test all CHECK-NOT in a block even if one fails
This commit makes FileCheck print all CHECK-NOT directive failure in a CHECK-NOT block even if one fails. Prior to that, it would stop trying to match CHECK-NOT directive as soon as one in the block fails. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D86315
This commit is contained in:
parent
5f9d8eb8f8
commit
b8cd30bfe9
@ -2197,6 +2197,7 @@ bool FileCheckString::CheckNot(const SourceMgr &SM, StringRef Buffer,
|
||||
const std::vector<const Pattern *> &NotStrings,
|
||||
const FileCheckRequest &Req,
|
||||
std::vector<FileCheckDiag> *Diags) const {
|
||||
bool DirectiveFail = false;
|
||||
for (const Pattern *Pat : NotStrings) {
|
||||
assert((Pat->getCheckTy() == Check::CheckNot) && "Expect CHECK-NOT!");
|
||||
|
||||
@ -2212,11 +2213,11 @@ bool FileCheckString::CheckNot(const SourceMgr &SM, StringRef Buffer,
|
||||
|
||||
PrintMatch(false, SM, Prefix, Pat->getLoc(), *Pat, 1, Buffer, Pos, MatchLen,
|
||||
Req, Diags);
|
||||
|
||||
return true;
|
||||
DirectiveFail = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
return false;
|
||||
return DirectiveFail;
|
||||
}
|
||||
|
||||
size_t FileCheckString::CheckDag(const SourceMgr &SM, StringRef Buffer,
|
||||
|
32
test/FileCheck/multiple-check-not-failures.txt
Normal file
32
test/FileCheck/multiple-check-not-failures.txt
Normal file
@ -0,0 +1,32 @@
|
||||
; Check that all errors in a CHECK-NOT blocks are reported, but that FileCheck
|
||||
; does not check past the block.
|
||||
RUN: %ProtectFileCheckOutput \
|
||||
RUN: not FileCheck --dump-input=never --input-file %s %s 2>&1 | \
|
||||
RUN: FileCheck --strict-whitespace --check-prefix CHECK-ERRORS %s
|
||||
|
||||
foo
|
||||
bar
|
||||
|
||||
barrier
|
||||
|
||||
baz
|
||||
|
||||
CHECK-NOT: bar
|
||||
CHECK-NOT: foo
|
||||
CHECK: barrier
|
||||
CHECK-NOT: baz
|
||||
|
||||
CHECK-ERRORS: multiple-check-not-failures.txt:[[#@LINE-5]]:12: error: {{C}}HECK-NOT: excluded string found in input
|
||||
CHECK-ERRORS-NEXT: {{C}}HECK-NOT: bar
|
||||
CHECK-ERRORS-NEXT: {{^}} ^{{$}}
|
||||
CHECK-ERRORS-NEXT: multiple-check-not-failures.txt:[[#@LINE-14]]:1: note: found here
|
||||
CHECK-ERRORS-NEXT: bar
|
||||
CHECK-ERRORS-NEXT: {{^}}^~~{{$}}
|
||||
CHECK-ERRORS-NEXT: multiple-check-not-failures.txt:[[#@LINE-10]]:12: error: {{C}}HECK-NOT: excluded string found in input
|
||||
CHECK-ERRORS-NEXT: {{C}}HECK-NOT: foo
|
||||
CHECK-ERRORS-NEXT: {{^}} ^{{$}}
|
||||
CHECK-ERRORS-NEXT: multiple-check-not-failures.txt:[[#@LINE-21]]:1: note: found here
|
||||
CHECK-ERRORS-NEXT: foo
|
||||
CHECK-ERRORS-NEXT: {{^}}^~~{{$}}
|
||||
CHECK-ERRORS-NOT: error:
|
||||
CHECK-ERRORS-NOT: {{C}}HECK-NOT: baz
|
Loading…
x
Reference in New Issue
Block a user