xref: /aosp_15_r20/external/clang/test/Misc/serialized-diags-really-long-text.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Make sure that diagnostics serialization does not crash with a really long diagnostic text.
2*67e74705SXin Li 
3*67e74705SXin Li // RUN: not %clang_cc1 -std=c++11 %s -serialize-diagnostic-file %t.dia
4*67e74705SXin Li // RUN: c-index-test -read-diagnostics %t.dia 2>&1 | FileCheck %s
5*67e74705SXin Li 
6*67e74705SXin Li typedef class AReallyLooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongName {} alias;
7*67e74705SXin Li 
8*67e74705SXin Li template <int N, typename ...T>
9*67e74705SXin Li struct MyTS {
10*67e74705SXin Li   typedef MyTS<N-1, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias,
11*67e74705SXin Li     alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias,
12*67e74705SXin Li     alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias,
13*67e74705SXin Li     alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias,
14*67e74705SXin Li     alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias,
15*67e74705SXin Li     alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias,
16*67e74705SXin Li     alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias,
17*67e74705SXin Li     alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias,
18*67e74705SXin Li     alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, T...> type;
callmeMyTS19*67e74705SXin Li   static type callme() {
20*67e74705SXin Li     return type::callme();
21*67e74705SXin Li   }
22*67e74705SXin Li };
23*67e74705SXin Li 
24*67e74705SXin Li template <typename ...T>
25*67e74705SXin Li struct MyTS<0, T...> {};
26*67e74705SXin Li 
foo()27*67e74705SXin Li void foo() {
28*67e74705SXin Li   // CHECK: [[@LINE+1]]:20: note: in instantiation of member function
29*67e74705SXin Li   int e = MyTS<2>::callme();
30*67e74705SXin Li }
31