annotate-comments.cpp revision 3e63d332baf0d3b8a5c0b7c2dac2ae85615b1d47
1// Run lines are sensitive to line numbers and come below the code. 2 3#ifndef HEADER 4#define HEADER 5 6// Not a Doxygen comment. NOT_DOXYGEN 7void notdoxy1(void); 8 9/* Not a Doxygen comment. NOT_DOXYGEN */ 10void notdoxy2(void); 11 12/*/ Not a Doxygen comment. NOT_DOXYGEN */ 13void notdoxy3(void); 14 15/** Doxygen comment. isdoxy4 IS_DOXYGEN_SINGLE */ 16void isdoxy4(void); 17 18/** 19 * Doxygen comment. isdoxy5 IS_DOXYGEN_SINGLE */ 20void isdoxy5(void); 21 22/** 23 * Doxygen comment. 24 * isdoxy6 IS_DOXYGEN_SINGLE */ 25void isdoxy6(void); 26 27/** 28 * Doxygen comment. 29 * isdoxy7 IS_DOXYGEN_SINGLE 30 */ 31void isdoxy7(void); 32 33/*! Doxygen comment. isdoxy8 IS_DOXYGEN_SINGLE */ 34void isdoxy8(void); 35 36/// Doxygen comment. isdoxy9 IS_DOXYGEN_SINGLE 37void isdoxy9(void); 38 39// Not a Doxygen comment. NOT_DOXYGEN 40/// Doxygen comment. isdoxy10 IS_DOXYGEN_SINGLE 41void isdoxy10(void); 42 43/// Doxygen comment. isdoxy11 IS_DOXYGEN_SINGLE 44// Not a Doxygen comment. NOT_DOXYGEN 45void isdoxy11(void); 46 47/** Doxygen comment. isdoxy12 IS_DOXYGEN_SINGLE */ 48/* Not a Doxygen comment. NOT_DOXYGEN */ 49void isdoxy12(void); 50 51/// Doxygen comment. isdoxy13 IS_DOXYGEN_START 52/// Doxygen comment. IS_DOXYGEN_END 53void isdoxy13(void); 54 55/// Doxygen comment. isdoxy14 IS_DOXYGEN_START 56/// Blah-blah-blah. 57/// Doxygen comment. IS_DOXYGEN_END 58void isdoxy14(void); 59 60/// Doxygen comment. isdoxy15 IS_DOXYGEN_START 61/** Blah-blah-blah */ 62/// Doxygen comment. IS_DOXYGEN_END 63void isdoxy15(void); 64 65/** Blah-blah-blah. isdoxy16 IS_DOXYGEN_START *//** Blah */ 66/// Doxygen comment. IS_DOXYGEN_END 67void isdoxy16(void); 68 69/// isdoxy17 IS_DOXYGEN_START 70// Not a Doxygen comment, but still picked up. 71/// IS_DOXYGEN_END 72void isdoxy17(void); 73 74unsigned 75// NOT_DOXYGEN 76/// isdoxy18 IS_DOXYGEN_START 77// Not a Doxygen comment, but still picked up. 78/// IS_DOXYGEN_END 79// NOT_DOXYGEN 80int isdoxy18(void); 81 82//! It all starts here. isdoxy19 IS_DOXYGEN_START 83/*! It's a little odd to continue line this, 84 * 85 * but we need more multi-line comments. */ 86/// This comment comes before my other comments 87/** This is a block comment that is associated with the function f. It 88 * runs for three lines. IS_DOXYGEN_END 89 */ 90void isdoxy19(int, int); 91 92// NOT IN THE COMMENT NOT_DOXYGEN 93/// This is a BCPL comment. isdoxy20 IS_DOXYGEN_START 94/// It has only two lines. 95/** But there are other blocks that are part of the comment, too. IS_DOXYGEN_END */ 96void isdoxy20(int); 97 98void notdoxy21(int); ///< This is a member comment. isdoxy21 IS_DOXYGEN_NOT_ATTACHED 99 100void notdoxy22(int); /*!< This is a member comment. isdoxy22 IS_DOXYGEN_NOT_ATTACHED */ 101 102void notdoxy23(int); /**< This is a member comment. isdoxy23 IS_DOXYGEN_NOT_ATTACHED */ 103 104void notdoxy24(int); // NOT_DOXYGEN 105 106/// IS_DOXYGEN_SINGLE 107struct isdoxy25 { 108}; 109 110struct test26 { 111 /// IS_DOXYGEN_SINGLE 112 int isdoxy26; 113}; 114 115struct test27 { 116 int isdoxy27; ///< IS_DOXYGEN_SINGLE 117}; 118 119struct notdoxy28 { 120}; ///< IS_DOXYGEN_NOT_ATTACHED 121 122/// IS_DOXYGEN_SINGLE 123enum isdoxy29 { 124}; 125 126enum notdoxy30 { 127}; ///< IS_DOXYGEN_NOT_ATTACHED 128 129/// IS_DOXYGEN_SINGLE 130namespace isdoxy31 { 131}; 132 133namespace notdoxy32 { 134}; ///< IS_DOXYGEN_NOT_ATTACHED 135 136class test33 { 137 ///< IS_DOXYGEN_NOT_ATTACHED 138 int isdoxy33; ///< isdoxy33 IS_DOXYGEN_SINGLE 139 int isdoxy34; ///< isdoxy34 IS_DOXYGEN_SINGLE 140 141 ///< IS_DOXYGEN_NOT_ATTACHED 142 int isdoxy35, ///< isdoxy35 IS_DOXYGEN_SINGLE 143 isdoxy36; ///< isdoxy36 IS_DOXYGEN_SINGLE 144 145 ///< IS_DOXYGEN_NOT_ATTACHED 146 int isdoxy37 ///< isdoxy37 IS_DOXYGEN_SINGLE 147 , isdoxy38 ///< isdoxy38 IS_DOXYGEN_SINGLE 148 , isdoxy39; ///< isdoxy39 IS_DOXYGEN_SINGLE 149}; 150 151// Verified that Doxygen attaches these. 152 153/// isdoxy40 IS_DOXYGEN_SINGLE 154// NOT_DOXYGEN 155void isdoxy40(int); 156 157unsigned 158/// isdoxy41 IS_DOXYGEN_SINGLE 159// NOT_DOXYGEN 160int isdoxy41(int); 161 162class test42 { 163 int isdoxy42; /* NOT_DOXYGEN */ ///< isdoxy42 IS_DOXYGEN_SINGLE 164}; 165 166/// IS_DOXYGEN_START 167/// It is fine to have a command at the end of comment. 168///\brief 169/// 170/// Some malformed command. 171/* \*/ 172/** 173 * \brief Aaa aaaaaaa aaaa. 174 * IS_DOXYGEN_END 175 */ 176void isdoxy43(void); 177 178/// IS_DOXYGEN_START Aaa bbb 179/// ccc. 180/// 181/// Ddd eee. 182/// Fff. 183/// 184/// Ggg. IS_DOXYGEN_END 185void isdoxy44(void); 186 187/// IS_DOXYGEN_START Aaa bbb 188/// ccc. 189/// 190/// \brief 191/// Ddd eee. 192/// Fff. 193/// 194/// Ggg. IS_DOXYGEN_END 195void isdoxy45(void); 196 197/// IS_DOXYGEN_START Aaa bbb 198/// ccc. 199/// 200/// \short 201/// Ddd eee. 202/// Fff. 203/// 204/// Ggg. IS_DOXYGEN_END 205void isdoxy46(void); 206 207/// IS_DOXYGEN_NOT_ATTACHED 208#define FOO 209void notdoxy47(void); 210 211/// IS_DOXYGEN_START Aaa bbb 212/// \param ccc 213/// \returns ddd IS_DOXYGEN_END 214void isdoxy48(int); 215 216/// \brief IS_DOXYGEN_START Aaa 217/// \returns bbb IS_DOXYGEN_END 218void isdoxy49(void); 219 220/// \param ccc IS_DOXYGEN_START 221/// \returns ddd IS_DOXYGEN_END 222void isdoxy50(int); 223 224/// Aaa. 225void comment_to_html_conversion_1(); 226 227/// \brief Aaa. 228void comment_to_html_conversion_2(); 229 230/// \short Aaa. 231void comment_to_html_conversion_3(); 232 233/// Aaa. 234/// 235/// \brief Bbb. 236void comment_to_html_conversion_4(); 237 238/// Aaa. 239/// 240/// \brief Bbb. 241/// 242/// Ccc. 243void comment_to_html_conversion_5(); 244 245/// \brief Aaa. 246/// \brief Bbb. 247void comment_to_html_conversion_6(); 248 249/// Aaa. 250/// 251/// \return Bbb. 252void comment_to_html_conversion_7(); 253 254/// Aaa. 255/// 256/// \returns Bbb. 257void comment_to_html_conversion_8(); 258 259/// \returns Aaa. 260/// \returns Bbb. 261void comment_to_html_conversion_9(); 262 263/// Aaa. 264/// 265/// Bbb. 266/// 267/// \returns Ccc. 268void comment_to_html_conversion_10(); 269 270/// \param x1 Aaa. 271void comment_to_html_conversion_11(int x1); 272 273/// \param zzz Aaa. 274void comment_to_html_conversion_12(int x1); 275 276/// \param x2 Bbb. 277/// \param x1 Aaa. 278void comment_to_html_conversion_13(int x1, int x2); 279 280/// \param x2 Bbb. 281/// \param zzz Aaa. 282/// \param x1 Aaa. 283void comment_to_html_conversion_14(int x1, int x2); 284 285/// \brief Aaa. 286/// 287/// Bbb. 288/// 289/// \param x2 Ddd. 290/// \param x1 Ccc. 291/// \returns Eee. 292void comment_to_html_conversion_15(int x1, int x2); 293 294/// <br><a href="http://example.com/">Aaa</a> 295void comment_to_html_conversion_16(); 296 297/// \verbatim 298/// <a href="http://example.com/">Aaa</a> 299/// <a href='http://example.com/'>Aaa</a> 300/// \endverbatim 301void comment_to_html_conversion_17(); 302 303/// \b Aaa 304void comment_to_html_conversion_18(); 305 306/// \c Aaa \p Bbb 307void comment_to_html_conversion_19(); 308 309/// \a Aaa \e Bbb \em Ccc 310void comment_to_html_conversion_20(); 311 312/// \\ \@ \& \$ \# \< \> \% \" \. \:: 313void comment_to_html_conversion_21(); 314 315/// & < > " 316void comment_to_html_conversion_22(); 317 318#endif 319 320// RUN: rm -rf %t 321// RUN: mkdir %t 322// RUN: %clang_cc1 -x c++ -emit-pch -o %t/out.pch %s 323// RUN: %clang_cc1 -x c++ -include-pch %t/out.pch -fsyntax-only %s 324 325// RUN: c-index-test -test-load-source all %s > %t/out.c-index-direct 326// RUN: c-index-test -test-load-tu %t/out.pch all > %t/out.c-index-pch 327 328// RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-direct 329// RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-pch 330 331// Declarations without Doxygen comments should not pick up some Doxygen comments. 332// WRONG-NOT: notdoxy{{.*}}Comment= 333// WRONG-NOT: test{{.*}}Comment= 334 335// Non-Doxygen comments should not be attached to anything. 336// WRONG-NOT: NOT_DOXYGEN 337 338// Some Doxygen comments are not attached to anything. 339// WRONG-NOT: IS_DOXYGEN_NOT_ATTACHED 340 341// Ensure we don't pick up extra comments. 342// WRONG-NOT: IS_DOXYGEN_START{{.*}}IS_DOXYGEN_START{{.*}}BriefComment= 343// WRONG-NOT: IS_DOXYGEN_END{{.*}}IS_DOXYGEN_END{{.*}}BriefComment= 344 345// RUN: FileCheck %s < %t/out.c-index-direct 346// RUN: FileCheck %s < %t/out.c-index-pch 347 348// CHECK: annotate-comments.cpp:16:6: FunctionDecl=isdoxy4:{{.*}} isdoxy4 IS_DOXYGEN_SINGLE 349// CHECK: annotate-comments.cpp:20:6: FunctionDecl=isdoxy5:{{.*}} isdoxy5 IS_DOXYGEN_SINGLE 350// CHECK: annotate-comments.cpp:25:6: FunctionDecl=isdoxy6:{{.*}} isdoxy6 IS_DOXYGEN_SINGLE 351// CHECK: annotate-comments.cpp:31:6: FunctionDecl=isdoxy7:{{.*}} isdoxy7 IS_DOXYGEN_SINGLE 352// CHECK: annotate-comments.cpp:34:6: FunctionDecl=isdoxy8:{{.*}} isdoxy8 IS_DOXYGEN_SINGLE 353// CHECK: annotate-comments.cpp:37:6: FunctionDecl=isdoxy9:{{.*}} isdoxy9 IS_DOXYGEN_SINGLE 354// CHECK: annotate-comments.cpp:41:6: FunctionDecl=isdoxy10:{{.*}} isdoxy10 IS_DOXYGEN_SINGLE 355// CHECK: annotate-comments.cpp:53:6: FunctionDecl=isdoxy13:{{.*}} isdoxy13 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END 356// CHECK: annotate-comments.cpp:58:6: FunctionDecl=isdoxy14:{{.*}} isdoxy14 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END 357// CHECK: annotate-comments.cpp:63:6: FunctionDecl=isdoxy15:{{.*}} isdoxy15 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END 358// CHECK: annotate-comments.cpp:67:6: FunctionDecl=isdoxy16:{{.*}} isdoxy16 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END 359// CHECK: annotate-comments.cpp:72:6: FunctionDecl=isdoxy17:{{.*}} isdoxy17 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END 360// CHECK: annotate-comments.cpp:80:5: FunctionDecl=isdoxy18:{{.*}} isdoxy18 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END 361// CHECK: annotate-comments.cpp:90:6: FunctionDecl=isdoxy19:{{.*}} isdoxy19 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END 362// CHECK: annotate-comments.cpp:96:6: FunctionDecl=isdoxy20:{{.*}} isdoxy20 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END 363// CHECK: annotate-comments.cpp:107:8: StructDecl=isdoxy25:{{.*}} IS_DOXYGEN_SINGLE 364// CHECK: annotate-comments.cpp:112:7: FieldDecl=isdoxy26:{{.*}} IS_DOXYGEN_SINGLE 365// CHECK: annotate-comments.cpp:116:7: FieldDecl=isdoxy27:{{.*}} IS_DOXYGEN_SINGLE 366// CHECK: annotate-comments.cpp:123:6: EnumDecl=isdoxy29:{{.*}} IS_DOXYGEN_SINGLE 367// CHECK: annotate-comments.cpp:130:11: Namespace=isdoxy31:{{.*}} IS_DOXYGEN_SINGLE 368// CHECK: annotate-comments.cpp:138:7: FieldDecl=isdoxy33:{{.*}} isdoxy33 IS_DOXYGEN_SINGLE 369// CHECK: annotate-comments.cpp:139:7: FieldDecl=isdoxy34:{{.*}} isdoxy34 IS_DOXYGEN_SINGLE 370// CHECK: annotate-comments.cpp:142:7: FieldDecl=isdoxy35:{{.*}} isdoxy35 IS_DOXYGEN_SINGLE 371// CHECK: annotate-comments.cpp:143:7: FieldDecl=isdoxy36:{{.*}} isdoxy36 IS_DOXYGEN_SINGLE 372// CHECK: annotate-comments.cpp:146:7: FieldDecl=isdoxy37:{{.*}} isdoxy37 IS_DOXYGEN_SINGLE 373// CHECK: annotate-comments.cpp:147:7: FieldDecl=isdoxy38:{{.*}} isdoxy38 IS_DOXYGEN_SINGLE 374// CHECK: annotate-comments.cpp:148:7: FieldDecl=isdoxy39:{{.*}} isdoxy39 IS_DOXYGEN_SINGLE 375// CHECK: annotate-comments.cpp:155:6: FunctionDecl=isdoxy40:{{.*}} isdoxy40 IS_DOXYGEN_SINGLE 376// CHECK: annotate-comments.cpp:160:5: FunctionDecl=isdoxy41:{{.*}} isdoxy41 IS_DOXYGEN_SINGLE 377// CHECK: annotate-comments.cpp:163:7: FieldDecl=isdoxy42:{{.*}} isdoxy42 IS_DOXYGEN_SINGLE 378// CHECK: annotate-comments.cpp:176:6: FunctionDecl=isdoxy43:{{.*}} IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END 379 380// CHECK: annotate-comments.cpp:185:6: FunctionDecl=isdoxy44:{{.*}} BriefComment=[IS_DOXYGEN_START Aaa bbb ccc.] 381// CHECK: annotate-comments.cpp:195:6: FunctionDecl=isdoxy45:{{.*}} BriefComment=[Ddd eee. Fff.] 382// CHECK: annotate-comments.cpp:205:6: FunctionDecl=isdoxy46:{{.*}} BriefComment=[Ddd eee. Fff.] 383// CHECK: annotate-comments.cpp:214:6: FunctionDecl=isdoxy48:{{.*}} BriefComment=[IS_DOXYGEN_START Aaa bbb] 384// CHECK: annotate-comments.cpp:218:6: FunctionDecl=isdoxy49:{{.*}} BriefComment=[IS_DOXYGEN_START Aaa] 385// CHECK: annotate-comments.cpp:222:6: FunctionDecl=isdoxy50:{{.*}} BriefComment=[Returns ddd IS_DOXYGEN_END] 386 387// CHECK: annotate-comments.cpp:225:6: FunctionDecl=comment_to_html_conversion_1:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p>] 388// CHECK-NEXT: CommentAST=[ 389// CHECK-NEXT: (CXComment_FullComment 390// CHECK-NEXT: (CXComment_Paragraph 391// CHECK-NEXT: (CXComment_Text Text=[ Aaa.])))] 392// CHECK: annotate-comments.cpp:228:6: FunctionDecl=comment_to_html_conversion_2:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p>] 393// CHECK-NEXT: CommentAST=[ 394// CHECK-NEXT: (CXComment_FullComment 395// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 396// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 397// CHECK-NEXT: (CXComment_BlockCommand CommandName=[brief] 398// CHECK-NEXT: (CXComment_Paragraph 399// CHECK-NEXT: (CXComment_Text Text=[ Aaa.]))))] 400// CHECK: annotate-comments.cpp:231:6: FunctionDecl=comment_to_html_conversion_3:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p>] 401// CHECK-NEXT: CommentAST=[ 402// CHECK-NEXT: (CXComment_FullComment 403// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 404// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 405// CHECK-NEXT: (CXComment_BlockCommand CommandName=[short] 406// CHECK-NEXT: (CXComment_Paragraph 407// CHECK-NEXT: (CXComment_Text Text=[ Aaa.]))))] 408// CHECK: annotate-comments.cpp:236:6: FunctionDecl=comment_to_html_conversion_4:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Bbb.</p><p> Aaa.</p>] 409// CHECK-NEXT: CommentAST=[ 410// CHECK-NEXT: (CXComment_FullComment 411// CHECK-NEXT: (CXComment_Paragraph 412// CHECK-NEXT: (CXComment_Text Text=[ Aaa.])) 413// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 414// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 415// CHECK-NEXT: (CXComment_BlockCommand CommandName=[brief] 416// CHECK-NEXT: (CXComment_Paragraph 417// CHECK-NEXT: (CXComment_Text Text=[ Bbb.]))))] 418// CHECK: annotate-comments.cpp:243:6: FunctionDecl=comment_to_html_conversion_5:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Bbb.</p><p> Aaa.</p><p> Ccc.</p>] 419// CHECK-NEXT: CommentAST=[ 420// CHECK-NEXT: (CXComment_FullComment 421// CHECK-NEXT: (CXComment_Paragraph 422// CHECK-NEXT: (CXComment_Text Text=[ Aaa.])) 423// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 424// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 425// CHECK-NEXT: (CXComment_BlockCommand CommandName=[brief] 426// CHECK-NEXT: (CXComment_Paragraph 427// CHECK-NEXT: (CXComment_Text Text=[ Bbb.]))) 428// CHECK-NEXT: (CXComment_Paragraph 429// CHECK-NEXT: (CXComment_Text Text=[ Ccc.])))] 430// CHECK: annotate-comments.cpp:247:6: FunctionDecl=comment_to_html_conversion_6:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa. </p><p class="para-brief"> Bbb.</p>] 431// CHECK-NEXT: CommentAST=[ 432// CHECK-NEXT: (CXComment_FullComment 433// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 434// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 435// CHECK-NEXT: (CXComment_BlockCommand CommandName=[brief] 436// CHECK-NEXT: (CXComment_Paragraph 437// CHECK-NEXT: (CXComment_Text Text=[ Aaa.] HasTrailingNewline) 438// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace))) 439// CHECK-NEXT: (CXComment_BlockCommand CommandName=[brief] 440// CHECK-NEXT: (CXComment_Paragraph 441// CHECK-NEXT: (CXComment_Text Text=[ Bbb.]))))] 442// CHECK: annotate-comments.cpp:252:6: FunctionDecl=comment_to_html_conversion_7:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p><p class="para-returns"><span class="word-returns">Returns</span> Bbb.</p>] 443// CHECK-NEXT: CommentAST=[ 444// CHECK-NEXT: (CXComment_FullComment 445// CHECK-NEXT: (CXComment_Paragraph 446// CHECK-NEXT: (CXComment_Text Text=[ Aaa.])) 447// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 448// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 449// CHECK-NEXT: (CXComment_BlockCommand CommandName=[return] 450// CHECK-NEXT: (CXComment_Paragraph 451// CHECK-NEXT: (CXComment_Text Text=[ Bbb.]))))] 452// CHECK: annotate-comments.cpp:257:6: FunctionDecl=comment_to_html_conversion_8:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p><p class="para-returns"><span class="word-returns">Returns</span> Bbb.</p>] 453// CHECK-NEXT: CommentAST=[ 454// CHECK-NEXT: (CXComment_FullComment 455// CHECK-NEXT: (CXComment_Paragraph 456// CHECK-NEXT: (CXComment_Text Text=[ Aaa.])) 457// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 458// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 459// CHECK-NEXT: (CXComment_BlockCommand CommandName=[returns] 460// CHECK-NEXT: (CXComment_Paragraph 461// CHECK-NEXT: (CXComment_Text Text=[ Bbb.]))))] 462// CHECK: annotate-comments.cpp:261:6: FunctionDecl=comment_to_html_conversion_9:{{.*}} FullCommentAsHTML=[<p class="para-returns"><span class="word-returns">Returns</span> Bbb.</p><p class="para-returns"><span class="word-returns">Returns</span> Aaa. </p>] 463// CHECK-NEXT: CommentAST=[ 464// CHECK-NEXT: (CXComment_FullComment 465// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 466// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 467// CHECK-NEXT: (CXComment_BlockCommand CommandName=[returns] 468// CHECK-NEXT: (CXComment_Paragraph 469// CHECK-NEXT: (CXComment_Text Text=[ Aaa.] HasTrailingNewline) 470// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace))) 471// CHECK-NEXT: (CXComment_BlockCommand CommandName=[returns] 472// CHECK-NEXT: (CXComment_Paragraph 473// CHECK-NEXT: (CXComment_Text Text=[ Bbb.]))))] 474// CHECK: annotate-comments.cpp:268:6: FunctionDecl=comment_to_html_conversion_10:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p><p> Bbb.</p><p class="para-returns"><span class="word-returns">Returns</span> Ccc.</p>] 475// CHECK-NEXT: CommentAST=[ 476// CHECK-NEXT: (CXComment_FullComment 477// CHECK-NEXT: (CXComment_Paragraph 478// CHECK-NEXT: (CXComment_Text Text=[ Aaa.])) 479// CHECK-NEXT: (CXComment_Paragraph 480// CHECK-NEXT: (CXComment_Text Text=[ Bbb.])) 481// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 482// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 483// CHECK-NEXT: (CXComment_BlockCommand CommandName=[returns] 484// CHECK-NEXT: (CXComment_Paragraph 485// CHECK-NEXT: (CXComment_Text Text=[ Ccc.]))))] 486// CHECK: annotate-comments.cpp:271:6: FunctionDecl=comment_to_html_conversion_11:{{.*}} FullCommentAsHTML=[<dl><dt class="param-name-index-0">x1</dt><dd class="param-descr-index-0"> Aaa.</dd></dl>] 487// CHECK-NEXT: CommentAST=[ 488// CHECK-NEXT: (CXComment_FullComment 489// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 490// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 491// CHECK-NEXT: (CXComment_ParamCommand in implicitly ParamName=[x1] ParamIndex=0 492// CHECK-NEXT: (CXComment_Paragraph 493// CHECK-NEXT: (CXComment_Text Text=[ Aaa.]))))] 494// CHECK: annotate-comments.cpp:274:6: FunctionDecl=comment_to_html_conversion_12:{{.*}} FullCommentAsHTML=[<dl><dt class="param-name-index-invalid">zzz</dt><dd class="param-descr-index-invalid"> Aaa.</dd></dl>] 495// CHECK-NEXT: CommentAST=[ 496// CHECK-NEXT: (CXComment_FullComment 497// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 498// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 499// CHECK-NEXT: (CXComment_ParamCommand in implicitly ParamName=[zzz] ParamIndex=Invalid 500// CHECK-NEXT: (CXComment_Paragraph 501// CHECK-NEXT: (CXComment_Text Text=[ Aaa.]))))] 502// CHECK: annotate-comments.cpp:278:6: FunctionDecl=comment_to_html_conversion_13:{{.*}} FullCommentAsHTML=[<dl><dt class="param-name-index-0">x1</dt><dd class="param-descr-index-0"> Aaa.</dd><dt class="param-name-index-1">x2</dt><dd class="param-descr-index-1"> Bbb. </dd></dl>] 503// CHECK-NEXT: CommentAST=[ 504// CHECK-NEXT: (CXComment_FullComment 505// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 506// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 507// CHECK-NEXT: (CXComment_ParamCommand in implicitly ParamName=[x2] ParamIndex=1 508// CHECK-NEXT: (CXComment_Paragraph 509// CHECK-NEXT: (CXComment_Text Text=[ Bbb.] HasTrailingNewline) 510// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace))) 511// CHECK-NEXT: (CXComment_ParamCommand in implicitly ParamName=[x1] ParamIndex=0 512// CHECK-NEXT: (CXComment_Paragraph 513// CHECK-NEXT: (CXComment_Text Text=[ Aaa.]))))] 514// CHECK: annotate-comments.cpp:283:6: FunctionDecl=comment_to_html_conversion_14:{{.*}} FullCommentAsHTML=[<dl><dt class="param-name-index-0">x1</dt><dd class="param-descr-index-0"> Aaa.</dd><dt class="param-name-index-1">x2</dt><dd class="param-descr-index-1"> Bbb. </dd><dt class="param-name-index-invalid">zzz</dt><dd class="param-descr-index-invalid"> Aaa. </dd></dl>] 515// CHECK-NEXT: CommentAST=[ 516// CHECK-NEXT: (CXComment_FullComment 517// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 518// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 519// CHECK-NEXT: (CXComment_ParamCommand in implicitly ParamName=[x2] ParamIndex=1 520// CHECK-NEXT: (CXComment_Paragraph 521// CHECK-NEXT: (CXComment_Text Text=[ Bbb.] HasTrailingNewline) 522// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace))) 523// CHECK-NEXT: (CXComment_ParamCommand in implicitly ParamName=[zzz] ParamIndex=Invalid 524// CHECK-NEXT: (CXComment_Paragraph 525// CHECK-NEXT: (CXComment_Text Text=[ Aaa.] HasTrailingNewline) 526// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace))) 527// CHECK-NEXT: (CXComment_ParamCommand in implicitly ParamName=[x1] ParamIndex=0 528// CHECK-NEXT: (CXComment_Paragraph 529// CHECK-NEXT: (CXComment_Text Text=[ Aaa.]))))] 530// CHECK: annotate-comments.cpp:292:6: FunctionDecl=comment_to_html_conversion_15:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p><p> Bbb.</p><dl><dt class="param-name-index-0">x1</dt><dd class="param-descr-index-0"> Ccc. </dd><dt class="param-name-index-1">x2</dt><dd class="param-descr-index-1"> Ddd. </dd></dl><p class="para-returns"><span class="word-returns">Returns</span> Eee.</p>] 531// CHECK-NEXT: CommentAST=[ 532// CHECK-NEXT: (CXComment_FullComment 533// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 534// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 535// CHECK-NEXT: (CXComment_BlockCommand CommandName=[brief] 536// CHECK-NEXT: (CXComment_Paragraph 537// CHECK-NEXT: (CXComment_Text Text=[ Aaa.]))) 538// CHECK-NEXT: (CXComment_Paragraph 539// CHECK-NEXT: (CXComment_Text Text=[ Bbb.])) 540// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 541// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 542// CHECK-NEXT: (CXComment_ParamCommand in implicitly ParamName=[x2] ParamIndex=1 543// CHECK-NEXT: (CXComment_Paragraph 544// CHECK-NEXT: (CXComment_Text Text=[ Ddd.] HasTrailingNewline) 545// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace))) 546// CHECK-NEXT: (CXComment_ParamCommand in implicitly ParamName=[x1] ParamIndex=0 547// CHECK-NEXT: (CXComment_Paragraph 548// CHECK-NEXT: (CXComment_Text Text=[ Ccc.] HasTrailingNewline) 549// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace))) 550// CHECK-NEXT: (CXComment_BlockCommand CommandName=[returns] 551// CHECK-NEXT: (CXComment_Paragraph 552// CHECK-NEXT: (CXComment_Text Text=[ Eee.]))))] 553// CHECK: annotate-comments.cpp:295:6: FunctionDecl=comment_to_html_conversion_16:{{.*}} FullCommentAsHTML=[<p class="para-brief"> <br><a href="http://example.com/">Aaa</a></p>] 554// CHECK-NEXT: CommentAST=[ 555// CHECK-NEXT: (CXComment_FullComment 556// CHECK-NEXT: (CXComment_Paragraph 557// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 558// CHECK-NEXT: (CXComment_HTMLStartTag Name=[br]) 559// CHECK-NEXT: (CXComment_HTMLStartTag Name=[a] Attrs: href=http://example.com/) 560// CHECK-NEXT: (CXComment_Text Text=[Aaa]) 561// CHECK-NEXT: (CXComment_HTMLEndTag Name=[a])))] 562// CHECK: annotate-comments.cpp:301:6: FunctionDecl=comment_to_html_conversion_17:{{.*}} FullCommentAsHTML=[<pre> <a href="http://example.com/">Aaa</a>\n <a href='http://example.com/'>Aaa</a></pre>] 563// CHECK-NEXT: CommentAST=[ 564// CHECK-NEXT: (CXComment_FullComment 565// CHECK-NEXT: (CXComment_Paragraph IsWhitespace 566// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 567// CHECK-NEXT: (CXComment_VerbatimBlockCommand CommandName=[verbatim] 568// CHECK-NEXT: (CXComment_VerbatimBlockLine Text=[ <a href="http://example.com/">Aaa</a>]) 569// CHECK-NEXT: (CXComment_VerbatimBlockLine Text=[ <a href='http://example.com/'>Aaa</a>])))] 570// CHECK: annotate-comments.cpp:304:6: FunctionDecl=comment_to_html_conversion_18:{{.*}} FullCommentAsHTML=[<p class="para-brief"> <b>Aaa</b></p>] 571// CHECK-NEXT: CommentAST=[ 572// CHECK-NEXT: (CXComment_FullComment 573// CHECK-NEXT: (CXComment_Paragraph 574// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 575// CHECK-NEXT: (CXComment_InlineCommand CommandName=[b] Arg[0]=Aaa)))] 576// CHECK: annotate-comments.cpp:307:6: FunctionDecl=comment_to_html_conversion_19:{{.*}} FullCommentAsHTML=[<p class="para-brief"> <tt>Aaa</tt> <tt>Bbb</tt></p>] 577// CHECK-NEXT: CommentAST=[ 578// CHECK-NEXT: (CXComment_FullComment 579// CHECK-NEXT: (CXComment_Paragraph 580// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 581// CHECK-NEXT: (CXComment_InlineCommand CommandName=[c] Arg[0]=Aaa) 582// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 583// CHECK-NEXT: (CXComment_InlineCommand CommandName=[p] Arg[0]=Bbb)))] 584// CHECK: annotate-comments.cpp:310:6: FunctionDecl=comment_to_html_conversion_20:{{.*}} FullCommentAsHTML=[<p class="para-brief"> <em>Aaa</em> <em>Bbb</em> <em>Ccc</em></p>] 585// CHECK-NEXT: CommentAST=[ 586// CHECK-NEXT: (CXComment_FullComment 587// CHECK-NEXT: (CXComment_Paragraph 588// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 589// CHECK-NEXT: (CXComment_InlineCommand CommandName=[a] Arg[0]=Aaa) 590// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 591// CHECK-NEXT: (CXComment_InlineCommand CommandName=[e] Arg[0]=Bbb) 592// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 593// CHECK-NEXT: (CXComment_InlineCommand CommandName=[em] Arg[0]=Ccc)))] 594// CHECK: annotate-comments.cpp:313:6: FunctionDecl=comment_to_html_conversion_21:{{.*}} FullCommentAsHTML=[<p class="para-brief"> \ @ & $ # < > % " . ::</p>] 595// CHECK-NEXT: CommentAST=[ 596// CHECK-NEXT: (CXComment_FullComment 597// CHECK-NEXT: (CXComment_Paragraph 598// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 599// CHECK-NEXT: (CXComment_Text Text=[\]) 600// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 601// CHECK-NEXT: (CXComment_Text Text=[@]) 602// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 603// CHECK-NEXT: (CXComment_Text Text=[&]) 604// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 605// CHECK-NEXT: (CXComment_Text Text=[$]) 606// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 607// CHECK-NEXT: (CXComment_Text Text=[#]) 608// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 609// CHECK-NEXT: (CXComment_Text Text=[<]) 610// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 611// CHECK-NEXT: (CXComment_Text Text=[>]) 612// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 613// CHECK-NEXT: (CXComment_Text Text=[%]) 614// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 615// CHECK-NEXT: (CXComment_Text Text=["]) 616// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 617// CHECK-NEXT: (CXComment_Text Text=[.]) 618// CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 619// CHECK-NEXT: (CXComment_Text Text=[::])))] 620// CHECK: annotate-comments.cpp:316:6: FunctionDecl=comment_to_html_conversion_22:{{.*}} FullCommentAsHTML=[<p class="para-brief"> &amp; &lt; &gt; &quot;</p>] 621// CHECK: CommentAST=[ 622// CHECK: (CXComment_FullComment 623// CHECK: (CXComment_Paragraph 624// CHECK: (CXComment_Text Text=[ & < > "])))] 625 626