diff options
Diffstat (limited to 'test/Frontend')
21 files changed, 353 insertions, 0 deletions
diff --git a/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/all.h b/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/all.h new file mode 100644 index 0000000..0f3f0be --- /dev/null +++ b/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/all.h @@ -0,0 +1 @@ +#include "warn.h" diff --git a/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/warn.h b/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/warn.h new file mode 100644 index 0000000..def881a --- /dev/null +++ b/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/warn.h @@ -0,0 +1,2 @@ +#if BOOST +#endif diff --git a/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/all.h b/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/all.h new file mode 100644 index 0000000..0f3f0be --- /dev/null +++ b/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/all.h @@ -0,0 +1 @@ +#include "warn.h" diff --git a/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/warn.h b/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/warn.h new file mode 100644 index 0000000..6a0c102 --- /dev/null +++ b/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/warn.h @@ -0,0 +1,2 @@ +#if MYLIB +#endif diff --git a/test/Frontend/Inputs/SystemHeaderPrefix/src/all.h b/test/Frontend/Inputs/SystemHeaderPrefix/src/all.h new file mode 100644 index 0000000..ace9699 --- /dev/null +++ b/test/Frontend/Inputs/SystemHeaderPrefix/src/all.h @@ -0,0 +1,6 @@ +#include "libs/boost/all.h" +#include "libs/mylib/all.h" + +#include "libs/boost/warn.h" +#include "libs/mylib/warn.h" +#include "src/warn.h" diff --git a/test/Frontend/Inputs/SystemHeaderPrefix/src/warn.h b/test/Frontend/Inputs/SystemHeaderPrefix/src/warn.h new file mode 100644 index 0000000..91e2591 --- /dev/null +++ b/test/Frontend/Inputs/SystemHeaderPrefix/src/warn.h @@ -0,0 +1,2 @@ +#if SRC +#endif diff --git a/test/Frontend/Inputs/rewrite-includes1.h b/test/Frontend/Inputs/rewrite-includes1.h new file mode 100644 index 0000000..1b6c80d --- /dev/null +++ b/test/Frontend/Inputs/rewrite-includes1.h @@ -0,0 +1,3 @@ +#pragma clang system_header +included_line1 +#include "rewrite-includes2.h" diff --git a/test/Frontend/Inputs/rewrite-includes2.h b/test/Frontend/Inputs/rewrite-includes2.h new file mode 100644 index 0000000..1114e51 --- /dev/null +++ b/test/Frontend/Inputs/rewrite-includes2.h @@ -0,0 +1 @@ +included_line2 diff --git a/test/Frontend/Inputs/rewrite-includes3.h b/test/Frontend/Inputs/rewrite-includes3.h new file mode 100644 index 0000000..3757bc8 --- /dev/null +++ b/test/Frontend/Inputs/rewrite-includes3.h @@ -0,0 +1 @@ +included_line3 diff --git a/test/Frontend/Inputs/rewrite-includes4.h b/test/Frontend/Inputs/rewrite-includes4.h new file mode 100644 index 0000000..b4e25d2 --- /dev/null +++ b/test/Frontend/Inputs/rewrite-includes4.h @@ -0,0 +1 @@ +included_line4 diff --git a/test/Frontend/Inputs/rewrite-includes5.h b/test/Frontend/Inputs/rewrite-includes5.h new file mode 100644 index 0000000..934bf41 --- /dev/null +++ b/test/Frontend/Inputs/rewrite-includes5.h @@ -0,0 +1 @@ +included_line5 diff --git a/test/Frontend/Inputs/rewrite-includes6.h b/test/Frontend/Inputs/rewrite-includes6.h new file mode 100644 index 0000000..c18e501 --- /dev/null +++ b/test/Frontend/Inputs/rewrite-includes6.h @@ -0,0 +1,2 @@ +#pragma once +included_line6 diff --git a/test/Frontend/Inputs/rewrite-includes7.h b/test/Frontend/Inputs/rewrite-includes7.h new file mode 100644 index 0000000..da00d4f --- /dev/null +++ b/test/Frontend/Inputs/rewrite-includes7.h @@ -0,0 +1,4 @@ +#ifndef REWRITE_INCLUDES_7 +#define REWRITE_INCLUDES_7 +included_line7 +#endif diff --git a/test/Frontend/rewrite-includes-missing.c b/test/Frontend/rewrite-includes-missing.c new file mode 100644 index 0000000..b79bbd9 --- /dev/null +++ b/test/Frontend/rewrite-includes-missing.c @@ -0,0 +1,7 @@ +// RUN: %clang_cc1 -verify -E -frewrite-includes %s -o - | FileCheck -strict-whitespace %s + +#include "foobar.h" // expected-error {{'foobar.h' file not found}} +// CHECK: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#include "foobar.h" +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 4 "{{.*}}rewrite-includes-missing.c" 2{{$}} diff --git a/test/Frontend/rewrite-includes.c b/test/Frontend/rewrite-includes.c new file mode 100644 index 0000000..546a2c4 --- /dev/null +++ b/test/Frontend/rewrite-includes.c @@ -0,0 +1,145 @@ +// RUN: %clang_cc1 -verify -E -frewrite-includes -DFIRST -I %S/Inputs %s -o - | FileCheck -strict-whitespace %s +// RUN: %clang_cc1 -verify -E -frewrite-includes -P -DFIRST -I %S/Inputs %s -o - | FileCheck -check-prefix=CHECKNL -strict-whitespace %s +// STARTCOMPARE +#define A(a,b) a ## b +A(1,2) +#include "rewrite-includes1.h" +#ifdef FIRST +#define HEADER "rewrite-includes3.h" +#include HEADER +#else +#include "rewrite-includes4.h" +#endif +#/**/include /**/ "rewrite-includes5.h" /**/ \ + +#include "rewrite-includes6.h" // comment + +#include "rewrite-includes6.h" /* comment + continues */ +#include "rewrite-includes7.h" +#include "rewrite-includes7.h" +// ENDCOMPARE +// CHECK: {{^}}// STARTCOMPARE{{$}} +// CHECK-NEXT: {{^}}#define A(a,b) a ## b{{$}} +// CHECK-NEXT: {{^}}A(1,2){{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#include "rewrite-includes1.h"{{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 1{{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#pragma clang system_header{{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 3{{$}} +// CHECK-NEXT: {{^}}included_line1{{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#include "rewrite-includes2.h"{{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes2.h" 1 3{{$}} +// CHECK-NEXT: {{^}}included_line2{{$}} +// CHECK-NEXT: {{^}}# 4 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 2 3{{$}} +// CHECK-NEXT: {{^}}# 7 "{{.*}}rewrite-includes.c" 2{{$}} +// CHECK-NEXT: {{^}}#ifdef FIRST{{$}} +// CHECK-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#include HEADER{{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes3.h" 1{{$}} +// CHECK-NEXT: {{^}}included_line3{{$}} +// CHECK-NEXT: {{^}}# 10 "{{.*}}rewrite-includes.c" 2{{$}} +// CHECK-NEXT: {{^}}#else{{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#include "rewrite-includes4.h"{{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 12 "{{.*}}rewrite-includes.c"{{$}} +// CHECK-NEXT: {{^}}#endif{{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}} +// CHECK-NEXT: {{^}} {{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes5.h" 1{{$}} +// CHECK-NEXT: {{^}}included_line5{{$}} +// CHECK-NEXT: {{^}}# 15 "{{.*}}rewrite-includes.c" 2{{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes6.h" 1{{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#pragma once{{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs[/\\]}}rewrite-includes6.h"{{$}} +// CHECK-NEXT: {{^}}included_line6{{$}} +// CHECK-NEXT: {{^}}# 16 "{{.*}}rewrite-includes.c" 2{{$}} +// CHECK-NEXT: {{^}} {{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}} +// CHECK-NEXT: {{^}} continues */{{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 19 "{{.*}}rewrite-includes.c"{{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes7.h" 1{{$}} +// CHECK-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}} +// CHECK-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}} +// CHECK-NEXT: {{^}}included_line7{{$}} +// CHECK-NEXT: {{^}}#endif{{$}} +// CHECK-NEXT: {{^}}# 20 "{{.*}}rewrite-includes.c" 2{{$}} +// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}} +// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 21 "{{.*}}rewrite-includes.c"{{$}} +// CHECK-NEXT: {{^}}// ENDCOMPARE{{$}} + +// CHECKNL: {{^}}// STARTCOMPARE{{$}} +// CHECKNL-NEXT: {{^}}#define A(a,b) a ## b{{$}} +// CHECKNL-NEXT: {{^}}A(1,2){{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#include "rewrite-includes1.h"{{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#pragma clang system_header{{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}included_line1{{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#include "rewrite-includes2.h"{{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}included_line2{{$}} +// CHECKNL-NEXT: {{^}}#ifdef FIRST{{$}} +// CHECKNL-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#include HEADER{{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}included_line3{{$}} +// CHECKNL-NEXT: {{^}}#else{{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#include "rewrite-includes4.h"{{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#endif{{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}} +// CHECKNL-NEXT: {{^}} {{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}included_line5{{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#pragma once{{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}included_line6{{$}} +// CHECKNL-NEXT: {{^}} {{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}} +// CHECKNL-NEXT: {{^}} continues */{{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}} +// CHECKNL-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}} +// CHECKNL-NEXT: {{^}}included_line7{{$}} +// CHECKNL-NEXT: {{^}}#endif{{$}} +// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}} +// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECKNL-NEXT: {{^}}// ENDCOMPARE{{$}} diff --git a/test/Frontend/system-header-prefix.c b/test/Frontend/system-header-prefix.c new file mode 100644 index 0000000..31194d9 --- /dev/null +++ b/test/Frontend/system-header-prefix.c @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -isystem-prefix libs/ -ino-system-prefix libs/mylib/ -I%S/Inputs/SystemHeaderPrefix -Wundef -E %s 2>&1 | FileCheck %s + +#include "src/all.h" + +// CHECK-NOT: BOOST +// CHECK: libs/mylib/warn.h:1:5: warning: 'MYLIB' is not defined, evaluates to 0 +// CHECK-NOT: BOOST +// CHECK: libs/mylib/warn.h:1:5: warning: 'MYLIB' is not defined, evaluates to 0 +// CHECK-NOT: BOOST +// CHECK: src/warn.h:1:5: warning: 'SRC' is not defined, evaluates to 0 +// CHECK-NOT: BOOST diff --git a/test/Frontend/verify-directive.h b/test/Frontend/verify-directive.h new file mode 100644 index 0000000..cb40586 --- /dev/null +++ b/test/Frontend/verify-directive.h @@ -0,0 +1,2 @@ +// Check that directives inside includes are included! +// expected-error@1 {{include file test}} diff --git a/test/Frontend/verify-fatal.c b/test/Frontend/verify-fatal.c new file mode 100644 index 0000000..0e74032 --- /dev/null +++ b/test/Frontend/verify-fatal.c @@ -0,0 +1,12 @@ +// RUN: %clang_cc1 -Wfatal-errors -verify %s 2>&1 | FileCheck %s + +#error first fatal +// expected-error@-1 {{first fatal}} + +#error second fatal +// expected-error@-1 {{second fatal}} + + +// CHECK: error: 'error' diagnostics expected but not seen: +// CHECK-NEXT: Line 6 (directive at {{.*}}verify-fatal.c:7): second fatal +// CHECK-NEXT: 1 error generated. diff --git a/test/Frontend/verify.c b/test/Frontend/verify.c new file mode 100644 index 0000000..f8d0f42 --- /dev/null +++ b/test/Frontend/verify.c @@ -0,0 +1,125 @@ +// RUN: %clang_cc1 -DTEST1 -verify %s +// RUN: %clang_cc1 -DTEST2 -verify %s 2>&1 | FileCheck -check-prefix=CHECK2 %s +// RUN: %clang_cc1 -DTEST3 -verify %s 2>&1 | FileCheck -check-prefix=CHECK3 %s +// RUN: %clang_cc1 -DTEST4 -verify %s 2>&1 | FileCheck -check-prefix=CHECK4 %s +// RUN: %clang_cc1 -DTEST5 -verify %s 2>&1 | FileCheck -check-prefix=CHECK5 %s + +// expected-warning@ malformed +// expected-error@7 1 {{missing or invalid line number}} + +// expected-warning@0 malformed +// expected-error@10 {{missing or invalid line number}} + +// expected-warning@-50 malformed +// expected-error@13 {{missing or invalid line number}} + +// expected-warning malformed +// expected-error@16 {{cannot find start}} + +// expected-error 0+ {{should also be ignored}} + +#ifdef TEST1 +#if 0 +// expected-error {{should be ignored}} +#endif + +#error should not be ignored +// expected-error@-1 1+ {{should not be ignored}} + +#line 90 +unexpected a; // expected-error@+0 + {{unknown type}} + +#line 60 +unexpected b; // expected-error@33 1-1 {{unknown type}} + +// expected-error@+2 {{file not found}} check that multi-line handled correctly: \ + +#include "missing_header_file.include" +#endif + +#ifdef TEST2 +#define MACRO some_value // expected-error {{define_error}} +#undef MACRO extra_token // expected-warning {{undef_error}} +#line -2 // expected-error {{line_error}} +#error AAA // expected-error {{BBB}} <- this shall be part of diagnostic +#warning CCC // expected-warning {{DDD}} <- this shall be part of diagnostic + +#if 0 +// This is encapsulated in "#if 0" so that the expected-* checks below +// are not inadvertently included in the diagnostic checking! + +// CHECK2: error: 'error' diagnostics expected but not seen: +// CHECK2-NEXT: Line 41: define_error +// CHECK2-NEXT: Line 43: line_error +// CHECK2-NEXT: error: 'error' diagnostics seen but not expected: +// CHECK2-NEXT: Line 43: #line directive requires a positive integer argument +// CHECK2-NEXT: Line 44: AAA // expected-error {{[{][{]BBB[}][}]}} <- this shall be part of diagnostic +// CHECK2-NEXT: error: 'warning' diagnostics expected but not seen: +// CHECK2-NEXT: Line 42: undef_error +// CHECK2-NEXT: error: 'warning' diagnostics seen but not expected: +// CHECK2-NEXT: Line 42: extra tokens at end of #undef directive +// CHECK2-NEXT: Line 45: CCC // expected-warning {{[{][{]DDD[}][}]}} <- this shall be part of diagnostic +// CHECK2-NEXT: 7 errors generated. +#endif +#endif + +#ifdef TEST3 +#ifndef TEST3 // expected-note {{line_67}} + // expected-note {{line_68_ignored}} +# ifdef UNDEFINED // expected-note {{line_69_ignored}} +# endif // expected-note {{line_70_ignored}} +#elif defined(TEST3) // expected-note {{line_71}} +# if 1 // expected-note {{line_72}} + // expected-note {{line_73}} +# else // expected-note {{line_74}} + // expected-note {{line_75_ignored}} +# ifndef TEST3 // expected-note {{line_76_ignored}} +# endif // expected-note {{line_77_ignored}} +# endif // expected-note {{line_78}} +#endif + +// CHECK3: error: 'note' diagnostics expected but not seen: +// CHECK3-NEXT: Line 67: line_67 +// CHECK3-NEXT: Line 71: line_71 +// CHECK3-NEXT: Line 72: line_72 +// CHECK3-NEXT: Line 73: line_73 +// CHECK3-NEXT: Line 74: line_74 +// CHECK3-NEXT: Line 78: line_78 +// CHECK3-NEXT: 6 errors generated. +#endif + +#ifdef TEST4 +#include "missing_header_file.include" // expected-error {{include_error}} + +// CHECK4: error: 'error' diagnostics expected but not seen: +// CHECK4-NEXT: Line 92: include_error +// CHECK4-NEXT: error: 'error' diagnostics seen but not expected: +// CHECK4-NEXT: Line 92: 'missing_header_file.include' file not found +// CHECK4-NEXT: 2 errors generated. +#endif + +#ifdef TEST5 +#include "verify-directive.h" +// expected-error@50 {{source file test}} + +// CHECK5: error: 'error' diagnostics expected but not seen: +// CHECK5-NEXT: Line 1 (directive at {{.*}}verify-directive.h:2): include file test +// CHECK5-NEXT: Line 50 (directive at {{.*}}verify.c:103): source file test +// CHECK5-NEXT: 2 errors generated. +#endif + +#if 0 +// RUN: %clang_cc1 -verify %t.invalid 2>&1 | FileCheck -check-prefix=CHECK6 %s + +// CHECK6: error: 'error' diagnostics seen but not expected: +// CHECK6-NEXT: (frontend): error reading '{{.*}}verify.c.tmp.invalid' +// CHECK6-NEXT: 1 error generated. + +// RUN: echo -e '//expected-error@2{{1}}\n#error 2' | %clang_cc1 -verify 2>&1 | FileCheck -check-prefix=CHECK7 %s + +// CHECK7: error: 'error' diagnostics expected but not seen: +// CHECK7-NEXT: Line 2 (directive at <stdin>:1): 1 +// CHECK7-NEXT: error: 'error' diagnostics seen but not expected: +// CHECK7-NEXT: Line 2: 2 +// CHECK7-NEXT: 2 errors generated. +#endif diff --git a/test/Frontend/verify2.c b/test/Frontend/verify2.c new file mode 100644 index 0000000..a1c7975 --- /dev/null +++ b/test/Frontend/verify2.c @@ -0,0 +1,19 @@ +#if 0 +// RUN: %clang_cc1 -verify %s 2>&1 | FileCheck %s + +// Please note that all comments are inside "#if 0" blocks so that +// VerifyDiagnosticConsumer sees no comments while processing this +// test-case. +#endif + +#include "verify2.h" +#error source + +#if 0 +// expected-error {{should be ignored}} + +// CHECK: error: 'error' diagnostics seen but not expected: +// CHECK-NEXT: Line 1: header +// CHECK-NEXT: Line 10: source +// CHECK-NEXT: 2 errors generated. +#endif diff --git a/test/Frontend/verify2.h b/test/Frontend/verify2.h new file mode 100644 index 0000000..8acbf6e --- /dev/null +++ b/test/Frontend/verify2.h @@ -0,0 +1,5 @@ +#error header + +#if 0 +// expected-error {{should be ignored}} +#endif |