forked from OSchip/llvm-project
[serialized diagnostics]: add test cases for serialized diagnostics, including a test case for no issues, multiple issues, and
a single issue. Along the way, tweak c-index-test -read-diagnostics output so it is easier to tell what diagnostics are child diagnostics. llvm-svn: 144349
This commit is contained in:
parent
2a3503e061
commit
a0e32fc8b6
|
@ -0,0 +1,10 @@
|
|||
void foo();
|
||||
|
||||
// RUN: %clang -Wall -fsyntax-only %s --serialize-diagnostics %t
|
||||
// RUN: c-index-test -read-diagnostics %t 2>&1 | FileCheck %s
|
||||
// RUN: rm -f %t
|
||||
|
||||
// NOTE: it is important that this test case contains no issues. It tests
|
||||
// that serialize diagnostics work in the absence of any issues.
|
||||
|
||||
// CHECK: Number of diagnostics: 0
|
|
@ -0,0 +1,16 @@
|
|||
void foo() {
|
||||
int voodoo;
|
||||
voodoo = voodoo + 1;
|
||||
}
|
||||
|
||||
// RUN: %clang -Wall -fsyntax-only %s --serialize-diagnostics %t
|
||||
// RUN: c-index-test -read-diagnostics %t 2>&1 | FileCheck %s
|
||||
// RUN: rm -f %t
|
||||
|
||||
// NOTE: it is important that this test case only contain a single issue. This test case checks
|
||||
// if we can handle serialized diagnostics that contain only one diagnostic.
|
||||
|
||||
// CHECK: {{.*}}serialized-diags-single-issue.c:3:12: warning: variable 'voodoo' is uninitialized when used here [-Wuninitialized]
|
||||
// CHECK: Range: {{.*}}serialized-diags-single-issue.c:3:12 {{.*}}serialized-diags-single-issue.c:3:18
|
||||
// CHECK: +-{{.*}}serialized-diags-single-issue.c:2:13: note: initialize the variable 'voodoo' to silence this warning []
|
||||
// CHECK: +-FIXIT: {{.*}}serialized-diags-single-issue.c:2:13 - {{.*}}serialized-diags-single-issue.c:2:13): " = 0"
|
|
@ -0,0 +1,23 @@
|
|||
void foo() {
|
||||
int voodoo;
|
||||
voodoo = voodoo + 1;
|
||||
}
|
||||
|
||||
void bar() {
|
||||
int dragon;
|
||||
dragon = dragon + 1
|
||||
}
|
||||
|
||||
// RUN: %clang -Wall -fsyntax-only %s --serialize-diagnostics %t 2>&1 /dev/null || true
|
||||
// RUN: c-index-test -read-diagnostics %t 2>&1 | FileCheck %s
|
||||
// RUN: rm -f %t
|
||||
|
||||
// This test case tests that we can handle multiple diagnostics which contain
|
||||
// FIXITs at different levels (one at the note, another at the main diagnostic).
|
||||
|
||||
// CHECK: {{.*}}/serialized-diags.c:3:12: warning: variable 'voodoo' is uninitialized when used here [-Wuninitialized]
|
||||
// CHECK: Range: {{.*}}/serialized-diags.c:3:12 {{.*}}/serialized-diags.c:3:18
|
||||
// CHECK: +-{{.*}}/serialized-diags.c:2:13: note: initialize the variable 'voodoo' to silence this warning []
|
||||
// CHECK: +-FIXIT: ({{.*}}/serialized-diags.c:2:13 - {{.*}}/serialized-diags.c:2:13): " = 0Parse Issueexpected ';' after expression"
|
||||
// CHECK: {{.*}}/serialized-diags.c:8:22: error: expected ';' after expression []
|
||||
// CHECK: FIXIT: ({{.*}}/serialized-diags.c:8:22 - {{.*}}/serialized-diags.c:8:22): ";"
|
|
@ -2307,8 +2307,12 @@ static const char *getSeverityString(enum CXDiagnosticSeverity severity) {
|
|||
}
|
||||
|
||||
static void printIndent(unsigned indent) {
|
||||
if (indent == 0)
|
||||
return;
|
||||
fprintf(stderr, "+");
|
||||
--indent;
|
||||
while (indent > 0) {
|
||||
fprintf(stderr, " ");
|
||||
fprintf(stderr, "-");
|
||||
--indent;
|
||||
}
|
||||
}
|
||||
|
@ -2366,8 +2370,6 @@ static void printDiagnosticSet(CXDiagnosticSet Diags, unsigned indent) {
|
|||
if (!Diags)
|
||||
return;
|
||||
|
||||
fprintf(stderr, "\n");
|
||||
|
||||
n = clang_getNumDiagnosticsInSet(Diags);
|
||||
for (i = 0; i < n; ++i) {
|
||||
CXSourceLocation DiagLoc;
|
||||
|
@ -2427,6 +2429,8 @@ static int read_diagnostics(const char *filename) {
|
|||
}
|
||||
|
||||
printDiagnosticSet(Diags, 0);
|
||||
fprintf(stderr, "Number of diagnostics: %d\n",
|
||||
clang_getNumDiagnosticsInSet(Diags));
|
||||
clang_disposeDiagnosticSet(Diags);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue