1aab8383aSDmitri Gribenko // Run lines are sensitive to line numbers and come below the code.
2aab8383aSDmitri Gribenko 
3aab8383aSDmitri Gribenko #ifndef HEADER
4aab8383aSDmitri Gribenko #define HEADER
5aab8383aSDmitri Gribenko 
6aab8383aSDmitri Gribenko // Not a Doxygen comment.  NOT_DOXYGEN
7aab8383aSDmitri Gribenko void notdoxy1(void);
8aab8383aSDmitri Gribenko 
9aab8383aSDmitri Gribenko /* Not a Doxygen comment.  NOT_DOXYGEN */
10aab8383aSDmitri Gribenko void notdoxy2(void);
11aab8383aSDmitri Gribenko 
12aab8383aSDmitri Gribenko /*/ Not a Doxygen comment.  NOT_DOXYGEN */
13aab8383aSDmitri Gribenko void notdoxy3(void);
14aab8383aSDmitri Gribenko 
15aab8383aSDmitri Gribenko /** Doxygen comment.  isdoxy4 IS_DOXYGEN_SINGLE */
16aab8383aSDmitri Gribenko void isdoxy4(void);
17aab8383aSDmitri Gribenko 
18aab8383aSDmitri Gribenko /**
19aab8383aSDmitri Gribenko  * Doxygen comment.  isdoxy5 IS_DOXYGEN_SINGLE */
20aab8383aSDmitri Gribenko void isdoxy5(void);
21aab8383aSDmitri Gribenko 
22aab8383aSDmitri Gribenko /**
23aab8383aSDmitri Gribenko  * Doxygen comment.
24aab8383aSDmitri Gribenko  * isdoxy6 IS_DOXYGEN_SINGLE */
25aab8383aSDmitri Gribenko void isdoxy6(void);
26aab8383aSDmitri Gribenko 
27aab8383aSDmitri Gribenko /**
28aab8383aSDmitri Gribenko  * Doxygen comment.
29aab8383aSDmitri Gribenko  * isdoxy7 IS_DOXYGEN_SINGLE
30aab8383aSDmitri Gribenko  */
31aab8383aSDmitri Gribenko void isdoxy7(void);
32aab8383aSDmitri Gribenko 
33aab8383aSDmitri Gribenko /*! Doxygen comment.  isdoxy8 IS_DOXYGEN_SINGLE */
34aab8383aSDmitri Gribenko void isdoxy8(void);
35aab8383aSDmitri Gribenko 
36aab8383aSDmitri Gribenko /// Doxygen comment.  isdoxy9 IS_DOXYGEN_SINGLE
37aab8383aSDmitri Gribenko void isdoxy9(void);
38aab8383aSDmitri Gribenko 
39aab8383aSDmitri Gribenko // Not a Doxygen comment.  NOT_DOXYGEN
40aab8383aSDmitri Gribenko /// Doxygen comment.  isdoxy10 IS_DOXYGEN_SINGLE
41aab8383aSDmitri Gribenko void isdoxy10(void);
42aab8383aSDmitri Gribenko 
43aab8383aSDmitri Gribenko /// Doxygen comment.  isdoxy11 IS_DOXYGEN_SINGLE
44aab8383aSDmitri Gribenko // Not a Doxygen comment.  NOT_DOXYGEN
45aab8383aSDmitri Gribenko void isdoxy11(void);
46aab8383aSDmitri Gribenko 
47aab8383aSDmitri Gribenko /** Doxygen comment.  isdoxy12  IS_DOXYGEN_SINGLE */
48aab8383aSDmitri Gribenko /* Not a Doxygen comment.  NOT_DOXYGEN */
49aab8383aSDmitri Gribenko void isdoxy12(void);
50aab8383aSDmitri Gribenko 
51aab8383aSDmitri Gribenko /// Doxygen comment.  isdoxy13 IS_DOXYGEN_START
52aab8383aSDmitri Gribenko /// Doxygen comment.  IS_DOXYGEN_END
53aab8383aSDmitri Gribenko void isdoxy13(void);
54aab8383aSDmitri Gribenko 
55aab8383aSDmitri Gribenko /// Doxygen comment.  isdoxy14 IS_DOXYGEN_START
56aab8383aSDmitri Gribenko /// Blah-blah-blah.
57aab8383aSDmitri Gribenko /// Doxygen comment.  IS_DOXYGEN_END
58aab8383aSDmitri Gribenko void isdoxy14(void);
59aab8383aSDmitri Gribenko 
60aab8383aSDmitri Gribenko /// Doxygen comment.  isdoxy15 IS_DOXYGEN_START
61aab8383aSDmitri Gribenko /** Blah-blah-blah */
62aab8383aSDmitri Gribenko /// Doxygen comment.  IS_DOXYGEN_END
63aab8383aSDmitri Gribenko void isdoxy15(void);
64aab8383aSDmitri Gribenko 
65aab8383aSDmitri Gribenko /** Blah-blah-blah. isdoxy16 IS_DOXYGEN_START *//** Blah */
66aab8383aSDmitri Gribenko /// Doxygen comment.  IS_DOXYGEN_END
67aab8383aSDmitri Gribenko void isdoxy16(void);
68aab8383aSDmitri Gribenko 
69557a8d56SDmitri Gribenko /// NOT_DOXYGEN
70557a8d56SDmitri Gribenko // NOT_DOXYGEN
71557a8d56SDmitri Gribenko /// isdoxy17 IS_DOXYGEN_START IS_DOXYGEN_END
72aab8383aSDmitri Gribenko void isdoxy17(void);
73aab8383aSDmitri Gribenko 
74aab8383aSDmitri Gribenko unsigned
75aab8383aSDmitri Gribenko // NOT_DOXYGEN
76557a8d56SDmitri Gribenko /// NOT_DOXYGEN
77557a8d56SDmitri Gribenko // NOT_DOXYGEN
78557a8d56SDmitri Gribenko /// isdoxy18 IS_DOXYGEN_START IS_DOXYGEN_END
79aab8383aSDmitri Gribenko // NOT_DOXYGEN
80aab8383aSDmitri Gribenko int isdoxy18(void);
81aab8383aSDmitri Gribenko 
82aab8383aSDmitri Gribenko //! It all starts here. isdoxy19 IS_DOXYGEN_START
83aab8383aSDmitri Gribenko /*! It's a little odd to continue line this,
84aab8383aSDmitri Gribenko  *
85aab8383aSDmitri Gribenko  * but we need more multi-line comments. */
86aab8383aSDmitri Gribenko /// This comment comes before my other comments
87aab8383aSDmitri Gribenko /** This is a block comment that is associated with the function f. It
88aab8383aSDmitri Gribenko  *  runs for three lines.  IS_DOXYGEN_END
89aab8383aSDmitri Gribenko  */
90aab8383aSDmitri Gribenko void isdoxy19(int, int);
91aab8383aSDmitri Gribenko 
92aab8383aSDmitri Gribenko // NOT IN THE COMMENT  NOT_DOXYGEN
93aab8383aSDmitri Gribenko /// This is a BCPL comment.  isdoxy20 IS_DOXYGEN_START
94aab8383aSDmitri Gribenko /// It has only two lines.
95aab8383aSDmitri Gribenko /** But there are other blocks that are part of the comment, too.  IS_DOXYGEN_END */
96aab8383aSDmitri Gribenko void isdoxy20(int);
97aab8383aSDmitri Gribenko 
9844cd7e67SDmitri Gribenko void notdoxy21(int); ///< This is a member comment.  isdoxy21 IS_DOXYGEN_NOT_ATTACHED
99aab8383aSDmitri Gribenko 
10044cd7e67SDmitri Gribenko void notdoxy22(int); /*!< This is a member comment.  isdoxy22 IS_DOXYGEN_NOT_ATTACHED */
101aab8383aSDmitri Gribenko 
10244cd7e67SDmitri Gribenko void notdoxy23(int); /**< This is a member comment.  isdoxy23 IS_DOXYGEN_NOT_ATTACHED */
103aab8383aSDmitri Gribenko 
104aab8383aSDmitri Gribenko void notdoxy24(int); // NOT_DOXYGEN
105aab8383aSDmitri Gribenko 
106aab8383aSDmitri Gribenko /// IS_DOXYGEN_SINGLE
107aab8383aSDmitri Gribenko struct isdoxy25 {
108aab8383aSDmitri Gribenko };
109aab8383aSDmitri Gribenko 
110aab8383aSDmitri Gribenko struct test26 {
111aab8383aSDmitri Gribenko   /// IS_DOXYGEN_SINGLE
112aab8383aSDmitri Gribenko   int isdoxy26;
113aab8383aSDmitri Gribenko };
114aab8383aSDmitri Gribenko 
115aab8383aSDmitri Gribenko struct test27 {
116aab8383aSDmitri Gribenko   int isdoxy27; ///< IS_DOXYGEN_SINGLE
117aab8383aSDmitri Gribenko };
118aab8383aSDmitri Gribenko 
119aab8383aSDmitri Gribenko struct notdoxy28 {
120aab8383aSDmitri Gribenko }; ///< IS_DOXYGEN_NOT_ATTACHED
121aab8383aSDmitri Gribenko 
122aab8383aSDmitri Gribenko /// IS_DOXYGEN_SINGLE
123aab8383aSDmitri Gribenko enum isdoxy29 {
124aab8383aSDmitri Gribenko };
125aab8383aSDmitri Gribenko 
126aab8383aSDmitri Gribenko enum notdoxy30 {
127aab8383aSDmitri Gribenko }; ///< IS_DOXYGEN_NOT_ATTACHED
128aab8383aSDmitri Gribenko 
129aab8383aSDmitri Gribenko /// IS_DOXYGEN_SINGLE
130aab8383aSDmitri Gribenko namespace isdoxy31 {
131aab8383aSDmitri Gribenko };
132aab8383aSDmitri Gribenko 
133aab8383aSDmitri Gribenko namespace notdoxy32 {
134aab8383aSDmitri Gribenko }; ///< IS_DOXYGEN_NOT_ATTACHED
135aab8383aSDmitri Gribenko 
136aab8383aSDmitri Gribenko class test33 {
137aab8383aSDmitri Gribenko                 ///< IS_DOXYGEN_NOT_ATTACHED
138aab8383aSDmitri Gribenko   int isdoxy33; ///< isdoxy33 IS_DOXYGEN_SINGLE
139aab8383aSDmitri Gribenko   int isdoxy34; ///< isdoxy34 IS_DOXYGEN_SINGLE
140aab8383aSDmitri Gribenko 
141aab8383aSDmitri Gribenko                 ///< IS_DOXYGEN_NOT_ATTACHED
142aab8383aSDmitri Gribenko   int isdoxy35, ///< isdoxy35 IS_DOXYGEN_SINGLE
143aab8383aSDmitri Gribenko       isdoxy36; ///< isdoxy36 IS_DOXYGEN_SINGLE
144aab8383aSDmitri Gribenko 
145aab8383aSDmitri Gribenko                 ///< IS_DOXYGEN_NOT_ATTACHED
146aab8383aSDmitri Gribenko   int isdoxy37  ///< isdoxy37 IS_DOXYGEN_SINGLE
147aab8383aSDmitri Gribenko     , isdoxy38  ///< isdoxy38 IS_DOXYGEN_SINGLE
148aab8383aSDmitri Gribenko     , isdoxy39; ///< isdoxy39 IS_DOXYGEN_SINGLE
149aab8383aSDmitri Gribenko };
150aab8383aSDmitri Gribenko 
151aab8383aSDmitri Gribenko // Verified that Doxygen attaches these.
152aab8383aSDmitri Gribenko 
153aab8383aSDmitri Gribenko /// isdoxy40 IS_DOXYGEN_SINGLE
154aab8383aSDmitri Gribenko // NOT_DOXYGEN
155aab8383aSDmitri Gribenko void isdoxy40(int);
156aab8383aSDmitri Gribenko 
157aab8383aSDmitri Gribenko unsigned
158aab8383aSDmitri Gribenko /// isdoxy41 IS_DOXYGEN_SINGLE
159aab8383aSDmitri Gribenko // NOT_DOXYGEN
160aab8383aSDmitri Gribenko int isdoxy41(int);
161aab8383aSDmitri Gribenko 
162aab8383aSDmitri Gribenko class test42 {
163aab8383aSDmitri Gribenko   int isdoxy42; /* NOT_DOXYGEN */ ///< isdoxy42 IS_DOXYGEN_SINGLE
164aab8383aSDmitri Gribenko };
165aab8383aSDmitri Gribenko 
1665188c4b9SDmitri Gribenko /// IS_DOXYGEN_START
1675188c4b9SDmitri Gribenko /// It is fine to have a command at the end of comment.
1685188c4b9SDmitri Gribenko ///\brief
1695188c4b9SDmitri Gribenko ///
1705188c4b9SDmitri Gribenko /// Some malformed command.
171557a8d56SDmitri Gribenko /** \*/
1725188c4b9SDmitri Gribenko /**
1735188c4b9SDmitri Gribenko  * \brief Aaa aaaaaaa aaaa.
1745188c4b9SDmitri Gribenko  * IS_DOXYGEN_END
1755188c4b9SDmitri Gribenko  */
1765188c4b9SDmitri Gribenko void isdoxy43(void);
1775188c4b9SDmitri Gribenko 
1785188c4b9SDmitri Gribenko /// IS_DOXYGEN_START Aaa bbb
1795188c4b9SDmitri Gribenko /// ccc.
1805188c4b9SDmitri Gribenko ///
1815188c4b9SDmitri Gribenko /// Ddd eee.
1825188c4b9SDmitri Gribenko /// Fff.
1835188c4b9SDmitri Gribenko ///
1845188c4b9SDmitri Gribenko /// Ggg. IS_DOXYGEN_END
1855188c4b9SDmitri Gribenko void isdoxy44(void);
1865188c4b9SDmitri Gribenko 
1875188c4b9SDmitri Gribenko /// IS_DOXYGEN_START Aaa bbb
1885188c4b9SDmitri Gribenko /// ccc.
1895188c4b9SDmitri Gribenko ///
1905188c4b9SDmitri Gribenko /// \brief
1915188c4b9SDmitri Gribenko /// Ddd eee.
1925188c4b9SDmitri Gribenko /// Fff.
1935188c4b9SDmitri Gribenko ///
1945188c4b9SDmitri Gribenko /// Ggg. IS_DOXYGEN_END
1955188c4b9SDmitri Gribenko void isdoxy45(void);
1965188c4b9SDmitri Gribenko 
1973e242d6dSDmitri Gribenko /// IS_DOXYGEN_START Aaa bbb
1983e242d6dSDmitri Gribenko /// ccc.
1993e242d6dSDmitri Gribenko ///
2003e242d6dSDmitri Gribenko /// \short
2013e242d6dSDmitri Gribenko /// Ddd eee.
2023e242d6dSDmitri Gribenko /// Fff.
2033e242d6dSDmitri Gribenko ///
2043e242d6dSDmitri Gribenko /// Ggg. IS_DOXYGEN_END
2053e242d6dSDmitri Gribenko void isdoxy46(void);
2063e242d6dSDmitri Gribenko 
2077e8729b9SDmitri Gribenko /// IS_DOXYGEN_NOT_ATTACHED
2087e8729b9SDmitri Gribenko #define FOO
2093e242d6dSDmitri Gribenko void notdoxy47(void);
2107e8729b9SDmitri Gribenko 
211a1e9c8e7SDmitri Gribenko /// IS_DOXYGEN_START Aaa bbb
212a1e9c8e7SDmitri Gribenko /// \param ccc
213a1e9c8e7SDmitri Gribenko /// \returns ddd IS_DOXYGEN_END
2143e242d6dSDmitri Gribenko void isdoxy48(int);
215a1e9c8e7SDmitri Gribenko 
21677369eeaSDmitri Gribenko /// \brief IS_DOXYGEN_START Aaa
21777369eeaSDmitri Gribenko /// \returns bbb IS_DOXYGEN_END
21877369eeaSDmitri Gribenko void isdoxy49(void);
21977369eeaSDmitri Gribenko 
22077369eeaSDmitri Gribenko /// \param ccc IS_DOXYGEN_START
22177369eeaSDmitri Gribenko /// \returns ddd IS_DOXYGEN_END
22277369eeaSDmitri Gribenko void isdoxy50(int);
22377369eeaSDmitri Gribenko 
22475eea899SDmitri Gribenko // One of the following lines has trailing whitespace.  It is intended, don't
22575eea899SDmitri Gribenko // fix it.
22675eea899SDmitri Gribenko /**
22775eea899SDmitri Gribenko  * Aaa. IS_DOXYGEN_START
22875eea899SDmitri Gribenko  *
22975eea899SDmitri Gribenko  * Bbb. IS_DOXYGEN_END
23075eea899SDmitri Gribenko  */
23175eea899SDmitri Gribenko void isdoxy51(int);
23275eea899SDmitri Gribenko 
23375eea899SDmitri Gribenko // One of the following lines has trailing whitespace.  It is intended, don't
23475eea899SDmitri Gribenko // fix it.
23575eea899SDmitri Gribenko /**
23675eea899SDmitri Gribenko  * Aaa. IS_DOXYGEN_START
23775eea899SDmitri Gribenko  * Bbb.
23875eea899SDmitri Gribenko  *
23975eea899SDmitri Gribenko  * Ccc. IS_DOXYGEN_END
24075eea899SDmitri Gribenko  */
24175eea899SDmitri Gribenko void isdoxy52(int);
24275eea899SDmitri Gribenko 
24375eea899SDmitri Gribenko /**
24475eea899SDmitri Gribenko  * \fn isdoxy53
24575eea899SDmitri Gribenko  *
24675eea899SDmitri Gribenko  * Aaa. IS_DOXYGEN_START IS_DOXYGEN_END
24775eea899SDmitri Gribenko  */
24875eea899SDmitri Gribenko void isdoxy53(int);
24975eea899SDmitri Gribenko 
250b534d3a0SArgyrios Kyrtzidis #define MYMAC(x,y)
251b534d3a0SArgyrios Kyrtzidis /**
252b534d3a0SArgyrios Kyrtzidis  * Aaa. IS_DOXYGEN_START IS_DOXYGEN_END
253b534d3a0SArgyrios Kyrtzidis  */
254b534d3a0SArgyrios Kyrtzidis MYMAC(0,0)
255b534d3a0SArgyrios Kyrtzidis void isdoxy54(int);
256b534d3a0SArgyrios Kyrtzidis 
257aab8383aSDmitri Gribenko #endif
258aab8383aSDmitri Gribenko 
259aab8383aSDmitri Gribenko // RUN: rm -rf %t
260aab8383aSDmitri Gribenko // RUN: mkdir %t
261d947a66cSDmitri Gribenko 
262d947a66cSDmitri Gribenko // Check that we serialize comment source locations properly.
263740c0fbeSDmitri Gribenko // RUN: %clang_cc1 -x c++ -std=c++11 -emit-pch -o %t/out.pch %s
264740c0fbeSDmitri Gribenko // RUN: %clang_cc1 -x c++ -std=c++11 -include-pch %t/out.pch -fsyntax-only %s
265aab8383aSDmitri Gribenko 
266*819f9ffeSArgyrios Kyrtzidis // RUN: c-index-test -write-pch %t/out.pch -x c++ -std=c++11 %s
267740c0fbeSDmitri Gribenko // RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s -std=c++11 > %t/out.c-index-direct
268aab8383aSDmitri Gribenko // RUN: c-index-test -test-load-tu %t/out.pch all > %t/out.c-index-pch
269aab8383aSDmitri Gribenko 
270aab8383aSDmitri Gribenko // RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-direct
271aab8383aSDmitri Gribenko // RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-pch
272aab8383aSDmitri Gribenko 
273aab8383aSDmitri Gribenko // Declarations without Doxygen comments should not pick up some Doxygen comments.
274aab8383aSDmitri Gribenko // WRONG-NOT: notdoxy{{.*}}Comment=
275aab8383aSDmitri Gribenko // WRONG-NOT: test{{.*}}Comment=
276aab8383aSDmitri Gribenko 
277aab8383aSDmitri Gribenko // Non-Doxygen comments should not be attached to anything.
278aab8383aSDmitri Gribenko // WRONG-NOT: NOT_DOXYGEN
279aab8383aSDmitri Gribenko 
280aab8383aSDmitri Gribenko // Some Doxygen comments are not attached to anything.
281aab8383aSDmitri Gribenko // WRONG-NOT: IS_DOXYGEN_NOT_ATTACHED
282aab8383aSDmitri Gribenko 
283aab8383aSDmitri Gribenko // Ensure we don't pick up extra comments.
2845188c4b9SDmitri Gribenko // WRONG-NOT: IS_DOXYGEN_START{{.*}}IS_DOXYGEN_START{{.*}}BriefComment=
2855188c4b9SDmitri Gribenko // WRONG-NOT: IS_DOXYGEN_END{{.*}}IS_DOXYGEN_END{{.*}}BriefComment=
286740c0fbeSDmitri Gribenko //
287740c0fbeSDmitri Gribenko // Ensure that XML is not invalid
288740c0fbeSDmitri Gribenko // WRONG-NOT: CommentXMLInvalid
289aab8383aSDmitri Gribenko 
290aab8383aSDmitri Gribenko // RUN: FileCheck %s < %t/out.c-index-direct
291aab8383aSDmitri Gribenko // RUN: FileCheck %s < %t/out.c-index-pch
292aab8383aSDmitri Gribenko 
293d947a66cSDmitri Gribenko // These CHECK lines are not located near the code on purpose.  This test
294d947a66cSDmitri Gribenko // checks that documentation comments are attached to declarations correctly.
295d947a66cSDmitri Gribenko // Adding a non-documentation comment with CHECK line between every two
296d947a66cSDmitri Gribenko // documentation comments will only test a single code path.
297d947a66cSDmitri Gribenko //
298aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:16:6: FunctionDecl=isdoxy4:{{.*}} isdoxy4 IS_DOXYGEN_SINGLE
299aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:20:6: FunctionDecl=isdoxy5:{{.*}} isdoxy5 IS_DOXYGEN_SINGLE
300aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:25:6: FunctionDecl=isdoxy6:{{.*}} isdoxy6 IS_DOXYGEN_SINGLE
301aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:31:6: FunctionDecl=isdoxy7:{{.*}} isdoxy7 IS_DOXYGEN_SINGLE
302aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:34:6: FunctionDecl=isdoxy8:{{.*}} isdoxy8 IS_DOXYGEN_SINGLE
303aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:37:6: FunctionDecl=isdoxy9:{{.*}} isdoxy9 IS_DOXYGEN_SINGLE
304aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:41:6: FunctionDecl=isdoxy10:{{.*}} isdoxy10 IS_DOXYGEN_SINGLE
305aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:53:6: FunctionDecl=isdoxy13:{{.*}} isdoxy13 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
306aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:58:6: FunctionDecl=isdoxy14:{{.*}} isdoxy14 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
307aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:63:6: FunctionDecl=isdoxy15:{{.*}} isdoxy15 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
308aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:67:6: FunctionDecl=isdoxy16:{{.*}} isdoxy16 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
309aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:72:6: FunctionDecl=isdoxy17:{{.*}} isdoxy17 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
310aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:80:5: FunctionDecl=isdoxy18:{{.*}} isdoxy18 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
311aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:90:6: FunctionDecl=isdoxy19:{{.*}} isdoxy19 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
312aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:96:6: FunctionDecl=isdoxy20:{{.*}} isdoxy20 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
313aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:107:8: StructDecl=isdoxy25:{{.*}} IS_DOXYGEN_SINGLE
314aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:112:7: FieldDecl=isdoxy26:{{.*}} IS_DOXYGEN_SINGLE
315aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:116:7: FieldDecl=isdoxy27:{{.*}} IS_DOXYGEN_SINGLE
316aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:123:6: EnumDecl=isdoxy29:{{.*}} IS_DOXYGEN_SINGLE
317aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:130:11: Namespace=isdoxy31:{{.*}} IS_DOXYGEN_SINGLE
318aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:138:7: FieldDecl=isdoxy33:{{.*}} isdoxy33 IS_DOXYGEN_SINGLE
319aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:139:7: FieldDecl=isdoxy34:{{.*}} isdoxy34 IS_DOXYGEN_SINGLE
320aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:142:7: FieldDecl=isdoxy35:{{.*}} isdoxy35 IS_DOXYGEN_SINGLE
321aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:143:7: FieldDecl=isdoxy36:{{.*}} isdoxy36 IS_DOXYGEN_SINGLE
322aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:146:7: FieldDecl=isdoxy37:{{.*}} isdoxy37 IS_DOXYGEN_SINGLE
323aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:147:7: FieldDecl=isdoxy38:{{.*}} isdoxy38 IS_DOXYGEN_SINGLE
324aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:148:7: FieldDecl=isdoxy39:{{.*}} isdoxy39 IS_DOXYGEN_SINGLE
325aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:155:6: FunctionDecl=isdoxy40:{{.*}} isdoxy40 IS_DOXYGEN_SINGLE
326aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:160:5: FunctionDecl=isdoxy41:{{.*}} isdoxy41 IS_DOXYGEN_SINGLE
327aab8383aSDmitri Gribenko // CHECK: annotate-comments.cpp:163:7: FieldDecl=isdoxy42:{{.*}} isdoxy42 IS_DOXYGEN_SINGLE
3285188c4b9SDmitri Gribenko // CHECK: annotate-comments.cpp:176:6: FunctionDecl=isdoxy43:{{.*}} IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
3295188c4b9SDmitri Gribenko 
3300743f946SDmitri Gribenko // CHECK: annotate-comments.cpp:185:6: FunctionDecl=isdoxy44:{{.*}} BriefComment=[IS_DOXYGEN_START Aaa bbb ccc.]
3310743f946SDmitri Gribenko // CHECK: annotate-comments.cpp:195:6: FunctionDecl=isdoxy45:{{.*}} BriefComment=[Ddd eee. Fff.]
3323e242d6dSDmitri Gribenko // CHECK: annotate-comments.cpp:205:6: FunctionDecl=isdoxy46:{{.*}} BriefComment=[Ddd eee. Fff.]
3333e242d6dSDmitri Gribenko // CHECK: annotate-comments.cpp:214:6: FunctionDecl=isdoxy48:{{.*}} BriefComment=[IS_DOXYGEN_START Aaa bbb]
33477369eeaSDmitri Gribenko // CHECK: annotate-comments.cpp:218:6: FunctionDecl=isdoxy49:{{.*}} BriefComment=[IS_DOXYGEN_START Aaa]
33577369eeaSDmitri Gribenko // CHECK: annotate-comments.cpp:222:6: FunctionDecl=isdoxy50:{{.*}} BriefComment=[Returns ddd IS_DOXYGEN_END]
33675eea899SDmitri Gribenko // CHECK: annotate-comments.cpp:231:6: FunctionDecl=isdoxy51:{{.*}} BriefComment=[Aaa. IS_DOXYGEN_START]
33775eea899SDmitri Gribenko // CHECK: annotate-comments.cpp:241:6: FunctionDecl=isdoxy52:{{.*}} BriefComment=[Aaa. IS_DOXYGEN_START Bbb.]
338b534d3a0SArgyrios Kyrtzidis // CHECK: annotate-comments.cpp:248:6: FunctionDecl=isdoxy53:{{.*}} BriefComment=[Aaa. IS_DOXYGEN_START IS_DOXYGEN_END]
339b534d3a0SArgyrios Kyrtzidis // CHECK: annotate-comments.cpp:255:6: FunctionDecl=isdoxy54:{{.*}} BriefComment=[Aaa. IS_DOXYGEN_START IS_DOXYGEN_END]
340