blob: 062e6bd8618f924dd18ff0777640ece5c3cd92b3 [file] [log] [blame]
Jordan Rose78541c42012-07-11 19:58:23 +00001// RUN: %clang_cc1 -DTEST1 -verify %s
2// RUN: %clang_cc1 -DTEST2 -verify %s 2>&1 | FileCheck -check-prefix=CHECK2 %s
3// RUN: %clang_cc1 -DTEST3 -verify %s 2>&1 | FileCheck -check-prefix=CHECK3 %s
4// RUN: %clang_cc1 -DTEST4 -verify %s 2>&1 | FileCheck -check-prefix=CHECK4 %s
5// RUN: %clang_cc1 -DTEST5 -verify %s 2>&1 | FileCheck -check-prefix=CHECK5 %s
6
7// expected-warning@ malformed
8// expected-error@7 1 {{missing or invalid line number}}
9
10// expected-warning@0 malformed
11// expected-error@10 {{missing or invalid line number}}
12
13// expected-warning@-50 malformed
14// expected-error@13 {{missing or invalid line number}}
15
16// expected-warning malformed
17// expected-error@16 {{cannot find start}}
18
19// expected-error 0+ {{should also be ignored}}
20
21#ifdef TEST1
22#if 0
23// expected-error {{should be ignored}}
24#endif
Andy Gibbs4a529d22012-10-19 12:36:49 +000025// eexpected-error {{should also be ignored: unrecognised directive}}
Jordan Rose78541c42012-07-11 19:58:23 +000026#error should not be ignored
27// expected-error@-1 1+ {{should not be ignored}}
28
29#line 90
30unexpected a; // expected-error@+0 + {{unknown type}}
31
32#line 60
33unexpected b; // expected-error@33 1-1 {{unknown type}}
34
35// expected-error@+2 {{file not found}} check that multi-line handled correctly: \
36
37#include "missing_header_file.include"
38#endif
39
40#ifdef TEST2
41#define MACRO some_value // expected-error {{define_error}}
42#undef MACRO extra_token // expected-warning {{undef_error}}
43#line -2 // expected-error {{line_error}}
44#error AAA // expected-error {{BBB}} <- this shall be part of diagnostic
45#warning CCC // expected-warning {{DDD}} <- this shall be part of diagnostic
46
47#if 0
48// This is encapsulated in "#if 0" so that the expected-* checks below
49// are not inadvertently included in the diagnostic checking!
50
51// CHECK2: error: 'error' diagnostics expected but not seen:
52// CHECK2-NEXT: Line 41: define_error
53// CHECK2-NEXT: Line 43: line_error
54// CHECK2-NEXT: error: 'error' diagnostics seen but not expected:
55// CHECK2-NEXT: Line 43: #line directive requires a positive integer argument
56// CHECK2-NEXT: Line 44: AAA // expected-error {{[{][{]BBB[}][}]}} <- this shall be part of diagnostic
57// CHECK2-NEXT: error: 'warning' diagnostics expected but not seen:
58// CHECK2-NEXT: Line 42: undef_error
59// CHECK2-NEXT: error: 'warning' diagnostics seen but not expected:
60// CHECK2-NEXT: Line 42: extra tokens at end of #undef directive
61// CHECK2-NEXT: Line 45: CCC // expected-warning {{[{][{]DDD[}][}]}} <- this shall be part of diagnostic
62// CHECK2-NEXT: 7 errors generated.
63#endif
64#endif
65
66#ifdef TEST3
67#ifndef TEST3 // expected-note {{line_67}}
68 // expected-note {{line_68_ignored}}
69# ifdef UNDEFINED // expected-note {{line_69_ignored}}
70# endif // expected-note {{line_70_ignored}}
71#elif defined(TEST3) // expected-note {{line_71}}
72# if 1 // expected-note {{line_72}}
73 // expected-note {{line_73}}
74# else // expected-note {{line_74}}
75 // expected-note {{line_75_ignored}}
76# ifndef TEST3 // expected-note {{line_76_ignored}}
77# endif // expected-note {{line_77_ignored}}
78# endif // expected-note {{line_78}}
79#endif
80
81// CHECK3: error: 'note' diagnostics expected but not seen:
82// CHECK3-NEXT: Line 67: line_67
83// CHECK3-NEXT: Line 71: line_71
84// CHECK3-NEXT: Line 72: line_72
85// CHECK3-NEXT: Line 73: line_73
86// CHECK3-NEXT: Line 74: line_74
87// CHECK3-NEXT: Line 78: line_78
88// CHECK3-NEXT: 6 errors generated.
89#endif
90
91#ifdef TEST4
92#include "missing_header_file.include" // expected-error {{include_error}}
93
94// CHECK4: error: 'error' diagnostics expected but not seen:
95// CHECK4-NEXT: Line 92: include_error
96// CHECK4-NEXT: error: 'error' diagnostics seen but not expected:
97// CHECK4-NEXT: Line 92: 'missing_header_file.include' file not found
98// CHECK4-NEXT: 2 errors generated.
99#endif
100
101#ifdef TEST5
102#include "verify-directive.h"
103// expected-error@50 {{source file test}}
104
105// CHECK5: error: 'error' diagnostics expected but not seen:
106// CHECK5-NEXT: Line 1 (directive at {{.*}}verify-directive.h:2): include file test
107// CHECK5-NEXT: Line 50 (directive at {{.*}}verify.c:103): source file test
108// CHECK5-NEXT: 2 errors generated.
109#endif
110
Jordan Rose7c304f52012-08-10 01:06:16 +0000111#if 0
112// RUN: %clang_cc1 -verify %t.invalid 2>&1 | FileCheck -check-prefix=CHECK6 %s
113
Andy Gibbs266dba32012-10-19 12:49:32 +0000114// CHECK6: error: no expected directives found: consider use of 'expected-no-diagnostics'
115// CHECK6-NEXT: error: 'error' diagnostics seen but not expected:
Jordan Rose7c304f52012-08-10 01:06:16 +0000116// CHECK6-NEXT: (frontend): error reading '{{.*}}verify.c.tmp.invalid'
Andy Gibbs266dba32012-10-19 12:49:32 +0000117// CHECK6-NEXT: 2 errors generated.
Jordan Rose7c304f52012-08-10 01:06:16 +0000118
119// RUN: echo -e '//expected-error@2{{1}}\n#error 2' | %clang_cc1 -verify 2>&1 | FileCheck -check-prefix=CHECK7 %s
120
121// CHECK7: error: 'error' diagnostics expected but not seen:
122// CHECK7-NEXT: Line 2 (directive at <stdin>:1): 1
123// CHECK7-NEXT: error: 'error' diagnostics seen but not expected:
124// CHECK7-NEXT: Line 2: 2
125// CHECK7-NEXT: 2 errors generated.
126#endif