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