1 // RUN: %clang_cc1 -Wdocumentation -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
2 
3 /// Aaa
4 int TestLocation;
5 // CHECK: VarDecl{{.*}}TestLocation
6 // CHECK-NEXT:   FullComment 0x{{[^ ]*}} <line:[[@LINE-3]]:4, col:7>
7 
8 ///
9 int TestIndent;
10 // CHECK:      {{^VarDecl.*TestIndent[^()]*$}}
11 // CHECK-NEXT: {{^`-FullComment.*>$}}
12 
13 /// Aaa
14 int Test_TextComment;
15 // CHECK:      VarDecl{{.*}}Test_TextComment
16 // CHECK-NEXT:   FullComment
17 // CHECK-NEXT:     ParagraphComment
18 // CHECK-NEXT:       TextComment{{.*}} Text=" Aaa"
19 
20 /// \brief Aaa
21 int Test_BlockCommandComment;
22 // CHECK:      VarDecl{{.*}}Test_BlockCommandComment
23 // CHECK:        BlockCommandComment{{.*}} Name="brief"
24 // CHECK-NEXT:     ParagraphComment
25 // CHECK-NEXT:       TextComment{{.*}} Text=" Aaa"
26 
27 /// \param Aaa xxx
28 /// \param [in,out] Bbb yyy
29 void Test_ParamCommandComment(int Aaa, int Bbb);
30 // CHECK:      FunctionDecl{{.*}}Test_ParamCommandComment
31 // CHECK:        ParamCommandComment{{.*}} [in] implicitly Param="Aaa" ParamIndex=0
32 // CHECK-NEXT:     ParagraphComment
33 // CHECK-NEXT:       TextComment{{.*}} Text=" xxx"
34 // CHECK:        ParamCommandComment{{.*}} [in,out] explicitly Param="Bbb" ParamIndex=1
35 // CHECK-NEXT:     ParagraphComment
36 // CHECK-NEXT:       TextComment{{.*}} Text=" yyy"
37 
38 /// \tparam Aaa xxx
39 template <typename Aaa> class Test_TParamCommandComment;
40 // CHECK:      ClassTemplateDecl{{.*}}Test_TParamCommandComment
41 // CHECK:        TParamCommandComment{{.*}} Param="Aaa" Position=<0>
42 // CHECK-NEXT:     ParagraphComment
43 // CHECK-NEXT:       TextComment{{.*}} Text=" xxx"
44 
45 /// \c Aaa
46 int Test_InlineCommandComment;
47 // CHECK:      VarDecl{{.*}}Test_InlineCommandComment
48 // CHECK:        InlineCommandComment{{.*}} Name="c" RenderMonospaced Arg[0]="Aaa"
49 
50 /// <a>Aaa</a>
51 /// <br/>
52 int Test_HTMLTagComment;
53 // CHECK:      VarDecl{{.*}}Test_HTMLTagComment
54 // CHECK-NEXT:   FullComment
55 // CHECK-NEXT:     ParagraphComment
56 // CHECK-NEXT:       TextComment{{.*}} Text=" "
57 // CHECK-NEXT:       HTMLStartTagComment{{.*}} Name="a"
58 // CHECK-NEXT:       TextComment{{.*}} Text="Aaa"
59 // CHECK-NEXT:       HTMLEndTagComment{{.*}} Name="a"
60 // CHECK-NEXT:       TextComment{{.*}} Text=" "
61 // CHECK-NEXT:       HTMLStartTagComment{{.*}} Name="br" SelfClosing
62 
63 /// \verbatim
64 /// Aaa
65 /// \endverbatim
66 int Test_VerbatimBlockComment;
67 // CHECK:      VarDecl{{.*}}Test_VerbatimBlockComment
68 // CHECK:        VerbatimBlockComment{{.*}} Name="verbatim" CloseName="endverbatim"
69 // CHECK-NEXT:     VerbatimBlockLineComment{{.*}} Text=" Aaa"
70 
71 /// \param ... More arguments
72 template<typename T>
73 void Test_TemplatedFunctionVariadic(int arg, ...);
74 // CHECK:      FunctionTemplateDecl{{.*}}Test_TemplatedFunctionVariadic
75 // CHECK:        ParamCommandComment{{.*}} [in] implicitly Param="..."
76 // CHECK-NEXT:     ParagraphComment
77 // CHECK-NEXT:       TextComment{{.*}} Text=" More arguments"
78