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 %s > %t/out
4// RUN: FileCheck %s < %t/out
5// rdar://12379114
6
7/*!
8     @interface IOCommandGate
9     @brief    This is a brief
10     @abstract Single-threaded work-loop client request mechanism.
11     @discussion An IOCommandGate instance is an extremely light weight mechanism that
12         executes an action on the driver's work-loop...
13     @textblock
14       Many discussions about text
15       Many1 discussions about text
16       Many2 discussions about text
17     @/textblock
18     @link //un_ref/c/func/function_name link text goes here @/link
19     @see  //un_ref/doc/uid/XX0000011 I/O Kit Fundamentals
20     @seealso //k_ref/doc/uid/XX30000905-CH204 Programming
21 */
22@interface IOCommandGate
23@end
24
25// CHECK:       (CXComment_BlockCommand CommandName=[abstract]
26// CHECK-NEXT:    (CXComment_Paragraph
27// CHECK-NEXT:       (CXComment_Text Text=[ Single-threaded work-loop client request mechanism.] HasTrailingNewline)
28// CHECK:       (CXComment_BlockCommand CommandName=[discussion]
29// CHECK-NEXT:     (CXComment_Paragraph
30// CHECK-NEXT:       (CXComment_Text Text=[ An IOCommandGate instance is an extremely light weight mechanism that] HasTrailingNewline)
31// CHECK-NEXT:       (CXComment_Text Text=[         executes an action on the driver's work-loop...] HasTrailingNewline)
32// CHECK:       (CXComment_VerbatimBlockCommand CommandName=[textblock]
33// CHECK-NEXT:     (CXComment_VerbatimBlockLine Text=[       Many discussions about text])
34// CHECK-NEXT:       (CXComment_VerbatimBlockLine Text=[       Many1 discussions about text])
35// CHECK-NEXT:       (CXComment_VerbatimBlockLine Text=[       Many2 discussions about text]))
36// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
37
38// CHECK:       (CXComment_VerbatimBlockCommand CommandName=[link]
39// CHECK-NEXT:     (CXComment_VerbatimBlockLine Text=[ //un_ref/c/func/function_name link text goes here ]))
40// CHECK-NEXT:     (CXComment_Paragraph IsWhitespace
41// CHECK-NEXT:     (CXComment_Text Text=[     ] IsWhitespace))
42// CHECK:       (CXComment_BlockCommand CommandName=[see]
43// CHECK-NEXT:     (CXComment_Paragraph
44// CHECK-NEXT:     (CXComment_Text Text=[  //un_ref/doc/uid/XX0000011 I/O Kit Fundamentals] HasTrailingNewline)
45// CHECK-NEXT:     (CXComment_Text Text=[     ] IsWhitespace)))
46// CHECK:       (CXComment_BlockCommand CommandName=[seealso]
47// CHECK-NEXT:     (CXComment_Paragraph
48// CHECK-NEXT:     (CXComment_Text Text=[ //k_ref/doc/uid/XX30000905-CH204 Programming])
49
50// rdar://12379053
51/*!
52\arg \c AlignLeft left alignment.
53\li \c AlignRight right alignment.
54
55  No other types of alignment are supported.
56*/
57struct S {
58  int AlignLeft;
59  int AlignRight;
60};
61
62// CHECK:       (CXComment_BlockCommand CommandName=[arg]
63// CHECK-NEXT:    (CXComment_Paragraph
64// CHECK-NEXT:    (CXComment_Text Text=[ ] IsWhitespace)
65// CHECK-NEXT:    (CXComment_InlineCommand CommandName=[c] RenderMonospaced Arg[0]=AlignLeft)
66// CHECK-NEXT:    (CXComment_Text Text=[ left alignment.] HasTrailingNewline)))
67// CHECK:       (CXComment_BlockCommand CommandName=[li]
68// CHECK-NEXT:    (CXComment_Paragraph
69// CHECK-NEXT:    (CXComment_Text Text=[ ] IsWhitespace)
70// CHECK-NEXT:    (CXComment_InlineCommand CommandName=[c] RenderMonospaced Arg[0]=AlignRight)
71// CHECK-NEXT:    (CXComment_Text Text=[ right alignment.])))
72// CHECK:       (CXComment_Paragraph
73// CHECK-NEXT:    (CXComment_Text Text=[  No other types of alignment are supported.]))
74
75// rdar://12379053
76/*! \struct Test
77 * Normal text.
78 *
79 * \par User defined paragraph:
80 * Contents of the paragraph.
81 *
82 * \par
83 * New paragraph under the same heading.
84 *
85 * \note
86 * This note consists of two paragraphs.
87 * This is the first paragraph.
88 *
89 * \par
90 * And this is the second paragraph.
91 *
92 * More normal text.
93 */
94
95struct Test {int filler;};
96
97// CHECK:       (CXComment_BlockCommand CommandName=[par]
98// CHECK-NEXT:     (CXComment_Paragraph
99// CHECK-NEXT:        (CXComment_Text Text=[ User defined paragraph:] HasTrailingNewline)
100// CHECK-NEXT:        (CXComment_Text Text=[ Contents of the paragraph.])))
101// CHECK:       (CXComment_BlockCommand CommandName=[par]
102// CHECK-NEXT:     (CXComment_Paragraph
103// CHECK-NEXT:        (CXComment_Text Text=[ New paragraph under the same heading.])))
104// CHECK:       (CXComment_BlockCommand CommandName=[note]
105// CHECK-NEXT:     (CXComment_Paragraph
106// CHECK-NEXT:        (CXComment_Text Text=[ This note consists of two paragraphs.] HasTrailingNewline)
107// CHECK-NEXT:        (CXComment_Text Text=[ This is the first paragraph.])))
108// CHECK:       (CXComment_BlockCommand CommandName=[par]
109// CHECK-NEXT:     (CXComment_Paragraph
110// CHECK-NEXT:     (CXComment_Text Text=[ And this is the second paragraph.])))
111
112