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