Change VerifyDiagnosticConsumer so that it *must* contain at least one "expected-*" directive. As a result, for test-cases that are not expected to generate any diagnostics, an additional directive "expected-no-diagnostics" has been implemented which can then be included in such test-cases. This new directive may not be used in conjunction with any other "expected-*" directive.
This change was initially proposed as a solution to the problem highlighted by check-in r164677, i.e. that -verify will not cause a test-case failure where the compile command does not actually reference the file.
Patch reviewed by David Blaikie.
llvm-svn: 166281
diff --git a/clang/test/Frontend/verify2.c b/clang/test/Frontend/verify2.c
index a1c7975..04f80ad 100644
--- a/clang/test/Frontend/verify2.c
+++ b/clang/test/Frontend/verify2.c
@@ -3,7 +3,7 @@
// Please note that all comments are inside "#if 0" blocks so that
// VerifyDiagnosticConsumer sees no comments while processing this
-// test-case.
+// test-case (and hence no expected-* directives).
#endif
#include "verify2.h"
@@ -12,8 +12,9 @@
#if 0
// expected-error {{should be ignored}}
-// CHECK: error: 'error' diagnostics seen but not expected:
+// CHECK: error: no expected directives found: consider use of 'expected-no-diagnostics'
+// CHECK-NEXT: error: 'error' diagnostics seen but not expected:
// CHECK-NEXT: Line 1: header
// CHECK-NEXT: Line 10: source
-// CHECK-NEXT: 2 errors generated.
+// CHECK-NEXT: 3 errors generated.
#endif