1// RUN: %clang_cc1 -Wdocumentation -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
2
3/// Aaa
4int TestLocation;
5// CHECK: VarDecl{{.*}}TestLocation
6// CHECK-NEXT:   FullComment 0x{{[^ ]*}} <line:[[@LINE-3]]:4, col:7>
7
8///
9int TestIndent;
10// CHECK:      {{^VarDecl.*TestIndent[^()]*$}}
11// CHECK-NEXT: {{^`-FullComment.*>$}}
12
13/// Aaa
14int 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
21int 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
29void 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
39template <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
46int Test_InlineCommandComment;
47// CHECK:      VarDecl{{.*}}Test_InlineCommandComment
48// CHECK:        InlineCommandComment{{.*}} Name="c" RenderMonospaced Arg[0]="Aaa"
49
50/// <a>Aaa</a>
51/// <br/>
52int 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
66int 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
72template<typename T>
73void 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