xref: /llvm-project/clang/test/Misc/diag-style.cpp (revision ef5217b3c0dcbb58927fe43400b6d1faa677bf98)
13184fb95STimm Bäder // RUN: not %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck -strict-whitespace %s
23184fb95STimm Bäder 
33184fb95STimm Bäder /// empty lines in multi-line diagnostic snippets are preserved.
43184fb95STimm Bäder static_assert(false &&
53184fb95STimm Bäder 
63184fb95STimm Bäder               true, "");
73184fb95STimm Bäder // CHECK: static assertion failed
83184fb95STimm Bäder // CHECK-NEXT: {{^}}    4 | static_assert(false &&{{$}}
93184fb95STimm Bäder // CHECK-NEXT: {{^}}      |               ^~~~~~~~{{$}}
103184fb95STimm Bäder // CHECK-NEXT: {{^}}    5 | {{$}}
113184fb95STimm Bäder // CHECK-NEXT: {{^}}    6 |               true, "");{{$}}
123184fb95STimm Bäder // CHECK-NEXT: {{^}}      |               ~~~~{{$}}
138554a55dSTimm Bäder 
148554a55dSTimm Bäder 
158554a55dSTimm Bäder /// #line pragmas are respected
168554a55dSTimm Bäder void printf(const char *a, ...) __attribute__((__format__(__printf__, 1, 2)));
178554a55dSTimm Bäder #line 10
f(int x)188554a55dSTimm Bäder void f(int x) {
198554a55dSTimm Bäder   printf("%f",
208554a55dSTimm Bäder          x);
218554a55dSTimm Bäder }
228554a55dSTimm Bäder // CHECK: 12:10: warning: format specifies type
238554a55dSTimm Bäder // CHECK-NEXT: {{^}}   11 |
248554a55dSTimm Bäder // CHECK-NEXT: {{^}}      |
258554a55dSTimm Bäder // CHECK-NEXT: {{^}}      |
268554a55dSTimm Bäder // CHECK-NEXT: {{^}}   12 |
27*ef5217b3STakuya Shimizu 
28*ef5217b3STakuya Shimizu #line 10
29*ef5217b3STakuya Shimizu int func(
30*ef5217b3STakuya Shimizu   int a, int b,
31*ef5217b3STakuya Shimizu   int&
32*ef5217b3STakuya Shimizu   r);
33*ef5217b3STakuya Shimizu 
test()34*ef5217b3STakuya Shimizu void test() {
35*ef5217b3STakuya Shimizu   func(3, 4, 5);
36*ef5217b3STakuya Shimizu }
37*ef5217b3STakuya Shimizu // CHECK: 10:5: note: candidate function not viable
38*ef5217b3STakuya Shimizu // CHECK-NEXT: {{^}}   10 |
39*ef5217b3STakuya Shimizu // CHECK-NEXT: {{^}}      |
40*ef5217b3STakuya Shimizu // CHECK-NEXT: {{^}}   11 |
41*ef5217b3STakuya Shimizu // CHECK-NEXT: {{^}}   12 |
42*ef5217b3STakuya Shimizu // CHECK-NEXT: {{^}}      |
43*ef5217b3STakuya Shimizu // CHECK-NEXT: {{^}}   13 |
44*ef5217b3STakuya Shimizu // CHECK-NEXT: {{^}}      |
45*ef5217b3STakuya Shimizu 
46