xref: /aosp_15_r20/external/clang/test/Index/comment-c-decls.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: rm -rf %t
2*67e74705SXin Li // RUN: mkdir %t
3*67e74705SXin Li // RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 %s > %t/out
4*67e74705SXin Li // RUN: FileCheck %s < %t/out
5*67e74705SXin Li 
6*67e74705SXin Li // Ensure that XML we generate is not invalid.
7*67e74705SXin Li // RUN: FileCheck %s -check-prefix=WRONG < %t/out
8*67e74705SXin Li // WRONG-NOT: CommentXMLInvalid
9*67e74705SXin Li // rdar://12378714
10*67e74705SXin Li 
11*67e74705SXin Li /**
12*67e74705SXin Li  * \brief Aaa.
13*67e74705SXin Li */
14*67e74705SXin Li int global_function();
15*67e74705SXin Li // CHECK: <Declaration>int global_function()</Declaration>
16*67e74705SXin Li 
17*67e74705SXin Li /**
18*67e74705SXin Li  * \param x1 Aaa.
19*67e74705SXin Li */
20*67e74705SXin Li extern void external_function(int x1);
21*67e74705SXin Li // CHECK: <Declaration>extern void external_function(int x1)</Declaration>
22*67e74705SXin Li 
23*67e74705SXin Li /**
24*67e74705SXin Li  * \brief global variable;
25*67e74705SXin Li */
26*67e74705SXin Li int global_variable;
27*67e74705SXin Li // CHECK: <Declaration>int global_variable</Declaration>
28*67e74705SXin Li 
29*67e74705SXin Li /**
30*67e74705SXin Li  * \brief local variable;
31*67e74705SXin Li */
32*67e74705SXin Li static int static_variable;
33*67e74705SXin Li // CHECK: <Declaration>static int static_variable</Declaration>
34*67e74705SXin Li 
35*67e74705SXin Li /**
36*67e74705SXin Li  * \brief external variable
37*67e74705SXin Li */
38*67e74705SXin Li extern int external_variable;
39*67e74705SXin Li // CHECK: <Declaration>extern int external_variable</Declaration>
40*67e74705SXin Li 
global_function()41*67e74705SXin Li int global_function() {
42*67e74705SXin Li   /**
43*67e74705SXin Li    * \brief a local variable
44*67e74705SXin Li   */
45*67e74705SXin Li   int local = 10;
46*67e74705SXin Li   return local;
47*67e74705SXin Li }
48*67e74705SXin Li // CHECK: <Declaration>int global_function()</Declaration>
49*67e74705SXin Li // CHECK: <Declaration>int local = 10</Declaration>
50*67e74705SXin Li 
51*67e74705SXin Li /**
52*67e74705SXin Li  * \brief initialized decl.
53*67e74705SXin Li */
54*67e74705SXin Li int initialized_global = 100;
55*67e74705SXin Li // CHECK: <Declaration>int initialized_global = 100</Declaration>
56*67e74705SXin Li 
57*67e74705SXin Li /**
58*67e74705SXin Li  * \brief typedef example
59*67e74705SXin Li */
60*67e74705SXin Li typedef int INT_T;
61*67e74705SXin Li // CHECK: <Declaration>typedef int INT_T</Declaration>
62*67e74705SXin Li 
63*67e74705SXin Li /**
64*67e74705SXin Li  * \brief aggregate type example
65*67e74705SXin Li */
66*67e74705SXin Li struct S {
67*67e74705SXin Li /**
68*67e74705SXin Li  * \brief iS1;
69*67e74705SXin Li */
70*67e74705SXin Li   int iS1;
71*67e74705SXin Li /**
72*67e74705SXin Li  * \brief dS1;
73*67e74705SXin Li */
74*67e74705SXin Li   double dS1;
75*67e74705SXin Li };
76*67e74705SXin Li // CHECK: <Declaration>struct S {}</Declaration>
77*67e74705SXin Li // CHECK: <Declaration>int iS1</Declaration>
78*67e74705SXin Li // CHECK: <Declaration>double dS1</Declaration>
79*67e74705SXin Li 
80*67e74705SXin Li /**
81*67e74705SXin Li  * \brief enum e;
82*67e74705SXin Li */
83*67e74705SXin Li enum e {
84*67e74705SXin Li   One,
85*67e74705SXin Li /**
86*67e74705SXin Li  * \brief Two;
87*67e74705SXin Li */
88*67e74705SXin Li   Two,
89*67e74705SXin Li   Three
90*67e74705SXin Li };
91*67e74705SXin Li // CHECK: <Declaration>enum e {}</Declaration>
92*67e74705SXin Li // CHECK: <Declaration>Two</Declaration>
93*67e74705SXin Li 
94*67e74705SXin Li /**
95*67e74705SXin Li  *\brief block declaration
96*67e74705SXin Li */
97*67e74705SXin Li int (^Block) (int i, int j);
98*67e74705SXin Li // CHECK: <Declaration>int (^Block)(int, int)</Declaration>
99*67e74705SXin Li 
100*67e74705SXin Li /**
101*67e74705SXin Li  *\brief block declaration
102*67e74705SXin Li */
103*67e74705SXin Li int (^Block1) (int i, int j) = ^(int i, int j) { return i + j; };
104*67e74705SXin Li // CHECK: <Declaration>int (^Block1)(int, int) = ^(int i, int j) {\n}</Declaration>
105