summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/test
diff options
context:
space:
mode:
authorJulie Hockett <juliehockett@google.com>2018-03-09 03:16:39 +0000
committerJulie Hockett <juliehockett@google.com>2018-03-09 03:16:39 +0000
commit671812462ae1b24c514e88b0116ac9f3c9cc594b (patch)
tree59021bde995a58ee3c1641f9b372d69a51db1030 /clang-tools-extra/test
parent81e911cd868252e2e788ae1b82fb1ac5b56fd1f6 (diff)
downloadbcm5719-llvm-671812462ae1b24c514e88b0116ac9f3c9cc594b.tar.gz
bcm5719-llvm-671812462ae1b24c514e88b0116ac9f3c9cc594b.zip
[clang-doc] Setup clang-doc frontend framework
Setting up the mapper part of the frontend framework for a clang-doc tool. It creates a series of relevant matchers for declarations, and uses the ToolExecutor to traverse the AST and extract the matching declarations and comments. The mapper serializes the extracted information to individual records for reducing and eventually doc generation. For a more detailed overview of the tool, see the design document on the mailing list: http://lists.llvm.org/pipermail/cfe-dev/2017-December/056203.html Differential Revision: https://reviews.llvm.org/D41102 llvm-svn: 327102
Diffstat (limited to 'clang-tools-extra/test')
-rw-r--r--clang-tools-extra/test/CMakeLists.txt1
-rw-r--r--clang-tools-extra/test/clang-doc/mapper-class-in-class.cpp35
-rw-r--r--clang-tools-extra/test/clang-doc/mapper-class-in-function.cpp38
-rw-r--r--clang-tools-extra/test/clang-doc/mapper-class.cpp19
-rw-r--r--clang-tools-extra/test/clang-doc/mapper-comments.cpp172
-rw-r--r--clang-tools-extra/test/clang-doc/mapper-enum.cpp36
-rw-r--r--clang-tools-extra/test/clang-doc/mapper-function.cpp25
-rw-r--r--clang-tools-extra/test/clang-doc/mapper-method.cpp43
-rw-r--r--clang-tools-extra/test/clang-doc/mapper-namespace.cpp17
-rw-r--r--clang-tools-extra/test/clang-doc/mapper-struct.cpp23
-rw-r--r--clang-tools-extra/test/clang-doc/mapper-union.cpp29
11 files changed, 438 insertions, 0 deletions
diff --git a/clang-tools-extra/test/CMakeLists.txt b/clang-tools-extra/test/CMakeLists.txt
index 26d3405a28b..28473b15beb 100644
--- a/clang-tools-extra/test/CMakeLists.txt
+++ b/clang-tools-extra/test/CMakeLists.txt
@@ -41,6 +41,7 @@ set(CLANG_TOOLS_TEST_DEPS
clang-apply-replacements
clang-change-namespace
clangd
+ clang-doc
clang-include-fixer
clang-move
clang-query
diff --git a/clang-tools-extra/test/clang-doc/mapper-class-in-class.cpp b/clang-tools-extra/test/clang-doc/mapper-class-in-class.cpp
new file mode 100644
index 00000000000..909f00d55cb
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/mapper-class-in-class.cpp
@@ -0,0 +1,35 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+// RUN: clang-doc --dump-mapper -doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: llvm-bcanalyzer %t/docs/bc/641AB4A3D36399954ACDE29C7A8833032BF40472.bc --dump | FileCheck %s --check-prefix CHECK-X-Y
+// RUN: llvm-bcanalyzer %t/docs/bc/CA7C7935730B5EACD25F080E9C83FA087CCDC75E.bc --dump | FileCheck %s --check-prefix CHECK-X
+
+class X {
+ class Y {};
+};
+
+// CHECK-X: <BLOCKINFO_BLOCK/>
+// CHECK-X-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-X-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-X-NEXT: </VersionBlock>
+// CHECK-X-NEXT: <RecordBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-X-NEXT: <USR abbrevid=4 op0=20 op1=202 op2=124 op3=121 op4=53 op5=115 op6=11 op7=94 op8=172 op9=210 op10=95 op11=8 op12=14 op13=156 op14=131 op15=250 op16=8 op17=124 op18=205 op19=199 op20=94/>
+ // CHECK-X-NEXT: <Name abbrevid=5 op0=1/> blob data = 'X'
+ // CHECK-X-NEXT: <DefLocation abbrevid=7 op0=9 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-X-NEXT: <TagType abbrevid=9 op0=3/>
+// CHECK-X-NEXT: </RecordBlock>
+
+
+// CHECK-X-Y: <BLOCKINFO_BLOCK/>
+// CHECK-X-Y-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-X-Y-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-X-Y-NEXT: </VersionBlock>
+// CHECK-X-Y-NEXT: <RecordBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-X-Y-NEXT: <USR abbrevid=4 op0=20 op1=100 op2=26 op3=180 op4=163 op5=211 op6=99 op7=153 op8=149 op9=74 op10=205 op11=226 op12=156 op13=122 op14=136 op15=51 op16=3 op17=43 op18=244 op19=4 op20=114/>
+ // CHECK-X-Y-NEXT: <Name abbrevid=5 op0=1/> blob data = 'Y'
+ // CHECK-X-Y-NEXT: <Namespace abbrevid=6 op0=1 op1=40/> blob data = 'CA7C7935730B5EACD25F080E9C83FA087CCDC75E'
+ // CHECK-X-Y-NEXT: <DefLocation abbrevid=7 op0=10 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-X-Y-NEXT: <TagType abbrevid=9 op0=3/>
+// CHECK-X-Y-NEXT: </RecordBlock>
diff --git a/clang-tools-extra/test/clang-doc/mapper-class-in-function.cpp b/clang-tools-extra/test/clang-doc/mapper-class-in-function.cpp
new file mode 100644
index 00000000000..0368f00851e
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/mapper-class-in-function.cpp
@@ -0,0 +1,38 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+// RUN: clang-doc --dump-mapper -doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: llvm-bcanalyzer %t/docs/bc/B6AC4C5C9F2EA3F2B3ECE1A33D349F4EE502B24E.bc --dump | FileCheck %s --check-prefix CHECK-H
+// RUN: llvm-bcanalyzer %t/docs/bc/E03E804368784360D86C757B549D14BB84A94415.bc --dump | FileCheck %s --check-prefix CHECK-H-I
+
+void H() {
+ class I {};
+}
+
+// CHECK-H: <BLOCKINFO_BLOCK/>
+// CHECK-H-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-H-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-H-NEXT: </VersionBlock>
+// CHECK-H-NEXT: <FunctionBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-H-NEXT: <USR abbrevid=4 op0=20 op1=182 op2=172 op3=76 op4=92 op5=159 op6=46 op7=163 op8=242 op9=179 op10=236 op11=225 op12=163 op13=61 op14=52 op15=159 op16=78 op17=229 op18=2 op19=178 op20=78/>
+ // CHECK-H-NEXT: <Name abbrevid=5 op0=1/> blob data = 'H'
+ // CHECK-H-NEXT: <DefLocation abbrevid=7 op0=9 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-H-NEXT: <TypeBlock NumWords=4 BlockCodeSize=4>
+ // CHECK-H-NEXT: <Type abbrevid=4 op0=4 op1=4/> blob data = 'void'
+ // CHECK-H-NEXT: </TypeBlock>
+// CHECK-H-NEXT: </FunctionBlock>
+
+// CHECK-H-I: <BLOCKINFO_BLOCK/>
+// CHECK-H-I-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-H-I-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-H-I-NEXT: </VersionBlock>
+// CHECK-H-I-NEXT: <RecordBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-H-I-NEXT: <USR abbrevid=4 op0=20 op1=224 op2=62 op3=128 op4=67 op5=104 op6=120 op7=67 op8=96 op9=216 op10=108 op11=117 op12=123 op13=84 op14=157 op15=20 op16=187 op17=132 op18=169 op19=68 op20=21/>
+ // CHECK-H-I-NEXT: <Name abbrevid=5 op0=1/> blob data = 'I'
+ // CHECK-H-I-NEXT: <Namespace abbrevid=6 op0=2 op1=40/> blob data = 'B6AC4C5C9F2EA3F2B3ECE1A33D349F4EE502B24E'
+ // CHECK-H-I-NEXT: <DefLocation abbrevid=7 op0=10 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-H-I-NEXT: <TagType abbrevid=9 op0=3/>
+// CHECK-H-I-NEXT: </RecordBlock>
+
+
diff --git a/clang-tools-extra/test/clang-doc/mapper-class.cpp b/clang-tools-extra/test/clang-doc/mapper-class.cpp
new file mode 100644
index 00000000000..7c0965caf01
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/mapper-class.cpp
@@ -0,0 +1,19 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+// RUN: clang-doc --dump-mapper -doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: llvm-bcanalyzer %t/docs/bc/289584A8E0FF4178A794622A547AA622503967A1.bc --dump | FileCheck %s
+
+class E {};
+
+// CHECK: <BLOCKINFO_BLOCK/>
+// CHECK-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-NEXT: </VersionBlock>
+// CHECK-NEXT: <RecordBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-NEXT: <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
+ // CHECK-NEXT: <Name abbrevid=5 op0=1/> blob data = 'E'
+ // CHECK-NEXT: <DefLocation abbrevid=7 op0=8 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-NEXT: <TagType abbrevid=9 op0=3/>
+// CHECK-NEXT: </RecordBlock>
diff --git a/clang-tools-extra/test/clang-doc/mapper-comments.cpp b/clang-tools-extra/test/clang-doc/mapper-comments.cpp
new file mode 100644
index 00000000000..91620cab08c
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/mapper-comments.cpp
@@ -0,0 +1,172 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+// RUN: clang-doc --dump-mapper -doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: llvm-bcanalyzer %t/docs/bc/7574630614A535710E5A6ABCFFF98BCA2D06A4CA.bc --dump | FileCheck %s
+
+/// \brief Brief description.
+///
+/// Extended description that
+/// continues onto the next line.
+///
+/// <ul> class="test">
+/// <li> Testing.
+/// </ul>
+///
+/// \verbatim
+/// The description continues.
+/// \endverbatim
+///
+/// \param [out] I is a parameter.
+/// \param J is a parameter.
+/// \return int
+int F(int I, int J);
+
+// CHECK: <BLOCKINFO_BLOCK/>
+// CHECK-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-NEXT: </VersionBlock>
+// CHECK-NEXT: <FunctionBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-NEXT: <USR abbrevid=4 op0=20 op1=117 op2=116 op3=99 op4=6 op5=20 op6=165 op7=53 op8=113 op9=14 op10=90 op11=106 op12=188 op13=255 op14=249 op15=139 op16=202 op17=45 op18=6 op19=164 op20=202/>
+ // CHECK-NEXT: <Name abbrevid=5 op0=1/> blob data = 'F'
+ // CHECK-NEXT: <CommentBlock NumWords=351 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'FullComment'
+ // CHECK-NEXT: <CommentBlock NumWords=13 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+ // CHECK-NEXT: <CommentBlock NumWords=5 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=31 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=19/> blob data = 'BlockCommandComment'
+ // CHECK-NEXT: <Name abbrevid=6 op0=5/> blob data = 'brief'
+ // CHECK-NEXT: <CommentBlock NumWords=19 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+ // CHECK-NEXT: <CommentBlock NumWords=11 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: <Text abbrevid=5 op0=19/> blob data = ' Brief description.'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=37 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+ // CHECK-NEXT: <CommentBlock NumWords=13 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: <Text abbrevid=5 op0=26/> blob data = ' Extended description that'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=14 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: <Text abbrevid=5 op0=30/> blob data = ' continues onto the next line.'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=83 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+ // CHECK-NEXT: <CommentBlock NumWords=5 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=9 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=19/> blob data = 'HTMLStartTagComment'
+ // CHECK-NEXT: <Name abbrevid=6 op0=2/> blob data = 'ul'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=10 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: <Text abbrevid=5 op0=14/> blob data = ' class="test">'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=5 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=9 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=19/> blob data = 'HTMLStartTagComment'
+ // CHECK-NEXT: <Name abbrevid=6 op0=2/> blob data = 'li'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=9 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: <Text abbrevid=5 op0=9/> blob data = ' Testing.'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=5 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=9 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=17/> blob data = 'HTMLEndTagComment'
+ // CHECK-NEXT: <Name abbrevid=6 op0=2/> blob data = 'ul'
+ // CHECK-NEXT: <SelfClosing abbrevid=10 op0=1/>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=13 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+ // CHECK-NEXT: <CommentBlock NumWords=5 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=32 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=20/> blob data = 'VerbatimBlockComment'
+ // CHECK-NEXT: <Name abbrevid=6 op0=8/> blob data = 'verbatim'
+ // CHECK-NEXT: <CloseName abbrevid=9 op0=11/> blob data = 'endverbatim'
+ // CHECK-NEXT: <CommentBlock NumWords=16 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=24/> blob data = 'VerbatimBlockLineComment'
+ // CHECK-NEXT: <Text abbrevid=5 op0=27/> blob data = ' The description continues.'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=13 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+ // CHECK-NEXT: <CommentBlock NumWords=5 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=39 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=19/> blob data = 'ParamCommandComment'
+ // CHECK-NEXT: <Direction abbrevid=7 op0=5/> blob data = '[out]'
+ // CHECK-NEXT: <ParamName abbrevid=8 op0=1/> blob data = 'I'
+ // CHECK-NEXT: <Explicit abbrevid=11 op0=1/>
+ // CHECK-NEXT: <CommentBlock NumWords=25 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+ // CHECK-NEXT: <CommentBlock NumWords=10 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: <Text abbrevid=5 op0=16/> blob data = ' is a parameter.'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=5 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=38 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=19/> blob data = 'ParamCommandComment'
+ // CHECK-NEXT: <Direction abbrevid=7 op0=4/> blob data = '[in]'
+ // CHECK-NEXT: <ParamName abbrevid=8 op0=1/> blob data = 'J'
+ // CHECK-NEXT: <CommentBlock NumWords=25 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+ // CHECK-NEXT: <CommentBlock NumWords=10 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: <Text abbrevid=5 op0=16/> blob data = ' is a parameter.'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=5 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <CommentBlock NumWords=27 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=19/> blob data = 'BlockCommandComment'
+ // CHECK-NEXT: <Name abbrevid=6 op0=6/> blob data = 'return'
+ // CHECK-NEXT: <CommentBlock NumWords=15 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+ // CHECK-NEXT: <CommentBlock NumWords=7 BlockCodeSize=4>
+ // CHECK-NEXT: <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+ // CHECK-NEXT: <Text abbrevid=5 op0=4/> blob data = ' int'
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: </CommentBlock>
+ // CHECK-NEXT: <Location abbrevid=8 op0=24 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-NEXT: <TypeBlock NumWords=4 BlockCodeSize=4>
+ // CHECK-NEXT: <Type abbrevid=4 op0=4 op1=3/> blob data = 'int'
+ // CHECK-NEXT: </TypeBlock>
+ // CHECK-NEXT: <FieldTypeBlock NumWords=6 BlockCodeSize=4>
+ // CHECK-NEXT: <Type abbrevid=4 op0=4 op1=3/> blob data = 'int'
+ // CHECK-NEXT: <Name abbrevid=5 op0=1/> blob data = 'I'
+ // CHECK-NEXT: </FieldTypeBlock>
+ // CHECK-NEXT: <FieldTypeBlock NumWords=6 BlockCodeSize=4>
+ // CHECK-NEXT: <Type abbrevid=4 op0=4 op1=3/> blob data = 'int'
+ // CHECK-NEXT: <Name abbrevid=5 op0=1/> blob data = 'J'
+ // CHECK-NEXT: </FieldTypeBlock>
+// CHECK-NEXT: </FunctionBlock>
diff --git a/clang-tools-extra/test/clang-doc/mapper-enum.cpp b/clang-tools-extra/test/clang-doc/mapper-enum.cpp
new file mode 100644
index 00000000000..a4db09798e5
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/mapper-enum.cpp
@@ -0,0 +1,36 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+// RUN: clang-doc --dump-mapper -doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: llvm-bcanalyzer %t/docs/bc/FC07BD34D5E77782C263FA944447929EA8753740.bc --dump | FileCheck %s --check-prefix CHECK-B
+// RUN: llvm-bcanalyzer %t/docs/bc/020E6C32A700C3170C009FCCD41671EDDBEAF575.bc --dump | FileCheck %s --check-prefix CHECK-C
+
+enum B { X, Y };
+
+// CHECK-B: <BLOCKINFO_BLOCK/>
+// CHECK-B-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-B-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-B-NEXT: </VersionBlock>
+// CHECK-B-NEXT: <EnumBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-B-NEXT: <USR abbrevid=4 op0=20 op1=252 op2=7 op3=189 op4=52 op5=213 op6=231 op7=119 op8=130 op9=194 op10=99 op11=250 op12=148 op13=68 op14=71 op15=146 op16=158 op17=168 op18=117 op19=55 op20=64/>
+ // CHECK-B-NEXT: <Name abbrevid=5 op0=1/> blob data = 'B'
+ // CHECK-B-NEXT: <DefLocation abbrevid=7 op0=9 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-B-NEXT: <Member abbrevid=9 op0=1/> blob data = 'X'
+ // CHECK-B-NEXT: <Member abbrevid=9 op0=1/> blob data = 'Y'
+// CHECK-B-NEXT: </EnumBlock>
+
+enum class C { A, B };
+
+// CHECK-C: <BLOCKINFO_BLOCK/>
+// CHECK-C-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-C-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-C-NEXT: </VersionBlock>
+// CHECK-C-NEXT: <EnumBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-C-NEXT: <USR abbrevid=4 op0=20 op1=2 op2=14 op3=108 op4=50 op5=167 op6=0 op7=195 op8=23 op9=12 op10=0 op11=159 op12=204 op13=212 op14=22 op15=113 op16=237 op17=219 op18=234 op19=245 op20=117/>
+ // CHECK-C-NEXT: <Name abbrevid=5 op0=1/> blob data = 'C'
+ // CHECK-C-NEXT: <DefLocation abbrevid=7 op0=23 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-C-NEXT: <Scoped abbrevid=10 op0=1/>
+ // CHECK-C-NEXT: <Member abbrevid=9 op0=1/> blob data = 'A'
+ // CHECK-C-NEXT: <Member abbrevid=9 op0=1/> blob data = 'B'
+// CHECK-C-NEXT: </EnumBlock>
diff --git a/clang-tools-extra/test/clang-doc/mapper-function.cpp b/clang-tools-extra/test/clang-doc/mapper-function.cpp
new file mode 100644
index 00000000000..07a6ecf8300
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/mapper-function.cpp
@@ -0,0 +1,25 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+// RUN: clang-doc --dump-mapper -doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: llvm-bcanalyzer %t/docs/bc/A44B32CC3C087C9AF75DAF50DE193E85E7B2C16B.bc --dump | FileCheck %s
+
+int F(int param) { return param; }
+
+// CHECK: <BLOCKINFO_BLOCK/>
+// CHECK-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-NEXT: </VersionBlock>
+// CHECK-NEXT: <FunctionBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-NEXT: <USR abbrevid=4 op0=20 op1=164 op2=75 op3=50 op4=204 op5=60 op6=8 op7=124 op8=154 op9=247 op10=93 op11=175 op12=80 op13=222 op14=25 op15=62 op16=133 op17=231 op18=178 op19=193 op20=107/>
+ // CHECK-NEXT: <Name abbrevid=5 op0=1/> blob data = 'F'
+ // CHECK-NEXT: <DefLocation abbrevid=7 op0=8 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-NEXT: <TypeBlock NumWords=4 BlockCodeSize=4>
+ // CHECK-NEXT: <Type abbrevid=4 op0=4 op1=3/> blob data = 'int'
+ // CHECK-NEXT: </TypeBlock>
+ // CHECK-NEXT: <FieldTypeBlock NumWords=7 BlockCodeSize=4>
+ // CHECK-NEXT: <Type abbrevid=4 op0=4 op1=3/> blob data = 'int'
+ // CHECK-NEXT: <Name abbrevid=5 op0=5/> blob data = 'param'
+ // CHECK-NEXT: </FieldTypeBlock>
+// CHECK-NEXT: </FunctionBlock>
diff --git a/clang-tools-extra/test/clang-doc/mapper-method.cpp b/clang-tools-extra/test/clang-doc/mapper-method.cpp
new file mode 100644
index 00000000000..7d16d7c09b5
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/mapper-method.cpp
@@ -0,0 +1,43 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+// RUN: clang-doc --dump-mapper -doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: llvm-bcanalyzer %t/docs/bc/F0F9FC65FC90F54F690144A7AFB15DFC3D69B6E6.bc --dump | FileCheck %s --check-prefix CHECK-G-F
+// RUN: llvm-bcanalyzer %t/docs/bc/4202E8BF0ECB12AE354C8499C52725B0EE30AED5.bc --dump | FileCheck %s --check-prefix CHECK-G
+
+class G {
+public:
+ int Method(int param) { return param; }
+};
+
+// CHECK-G: <BLOCKINFO_BLOCK/>
+// CHECK-G-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-G-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-G-NEXT: </VersionBlock>
+// CHECK-G-NEXT: <RecordBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-G-NEXT: <USR abbrevid=4 op0=20 op1=66 op2=2 op3=232 op4=191 op5=14 op6=203 op7=18 op8=174 op9=53 op10=76 op11=132 op12=153 op13=197 op14=39 op15=37 op16=176 op17=238 op18=48 op19=174 op20=213/>
+ // CHECK-G-NEXT: <Name abbrevid=5 op0=1/> blob data = 'G'
+ // CHECK-G-NEXT: <DefLocation abbrevid=7 op0=9 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-G-NEXT: <TagType abbrevid=9 op0=3/>
+// CHECK-G-NEXT: </RecordBlock>
+
+// CHECK-G-F: <BLOCKINFO_BLOCK/>
+// CHECK-G-F-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-G-F-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-G-F-NEXT: </VersionBlock>
+// CHECK-G-F-NEXT: <FunctionBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-G-F-NEXT: <USR abbrevid=4 op0=20 op1=240 op2=249 op3=252 op4=101 op5=252 op6=144 op7=245 op8=79 op9=105 op10=1 op11=68 op12=167 op13=175 op14=177 op15=93 op16=252 op17=61 op18=105 op19=182 op20=230/>
+ // CHECK-G-F-NEXT: <Name abbrevid=5 op0=6/> blob data = 'Method'
+ // CHECK-G-F-NEXT: <Namespace abbrevid=6 op0=1 op1=40/> blob data = '4202E8BF0ECB12AE354C8499C52725B0EE30AED5'
+ // CHECK-G-F-NEXT: <IsMethod abbrevid=11 op0=1/>
+ // CHECK-G-F-NEXT: <DefLocation abbrevid=7 op0=11 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-G-F-NEXT: <Parent abbrevid=9 op0=1 op1=40/> blob data = '4202E8BF0ECB12AE354C8499C52725B0EE30AED5'
+ // CHECK-G-F-NEXT: <TypeBlock NumWords=4 BlockCodeSize=4>
+ // CHECK-G-F-NEXT: <Type abbrevid=4 op0=4 op1=3/> blob data = 'int'
+ // CHECK-G-F-NEXT: </TypeBlock>
+ // CHECK-G-F-NEXT: <FieldTypeBlock NumWords=7 BlockCodeSize=4>
+ // CHECK-G-F-NEXT: <Type abbrevid=4 op0=4 op1=3/> blob data = 'int'
+ // CHECK-G-F-NEXT: <Name abbrevid=5 op0=5/> blob data = 'param'
+ // CHECK-G-F-NEXT: </FieldTypeBlock>
+// CHECK-G-F-NEXT: </FunctionBlock>
diff --git a/clang-tools-extra/test/clang-doc/mapper-namespace.cpp b/clang-tools-extra/test/clang-doc/mapper-namespace.cpp
new file mode 100644
index 00000000000..e46dfdaa5c6
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/mapper-namespace.cpp
@@ -0,0 +1,17 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+// RUN: clang-doc --dump-mapper -doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: llvm-bcanalyzer %t/docs/bc/8D042EFFC98B373450BC6B5B90A330C25A150E9C.bc --dump | FileCheck %s
+
+namespace A {}
+
+// CHECK: <BLOCKINFO_BLOCK/>
+// CHECK-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-NEXT: </VersionBlock>
+// CHECK-NEXT: <NamespaceBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-NEXT: <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
+ // CHECK-NEXT: <Name abbrevid=5 op0=1/> blob data = 'A'
+// CHECK-NEXT: </NamespaceBlock>
diff --git a/clang-tools-extra/test/clang-doc/mapper-struct.cpp b/clang-tools-extra/test/clang-doc/mapper-struct.cpp
new file mode 100644
index 00000000000..f13dd60b316
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/mapper-struct.cpp
@@ -0,0 +1,23 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+// RUN: clang-doc --dump-mapper -doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: llvm-bcanalyzer %t/docs/bc/06B5F6A19BA9F6A832E127C9968282B94619B210.bc --dump | FileCheck %s
+
+struct C { int i; };
+
+// CHECK: <BLOCKINFO_BLOCK/>
+// CHECK-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-NEXT: </VersionBlock>
+// CHECK-NEXT: <RecordBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-NEXT: <USR abbrevid=4 op0=20 op1=6 op2=181 op3=246 op4=161 op5=155 op6=169 op7=246 op8=168 op9=50 op10=225 op11=39 op12=201 op13=150 op14=130 op15=130 op16=185 op17=70 op18=25 op19=178 op20=16/>
+ // CHECK-NEXT: <Name abbrevid=5 op0=1/> blob data = 'C'
+ // CHECK-NEXT: <DefLocation abbrevid=7 op0=8 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-NEXT: <MemberTypeBlock NumWords=6 BlockCodeSize=4>
+ // CHECK-NEXT: <Type abbrevid=4 op0=4 op1=3/> blob data = 'int'
+ // CHECK-NEXT: <Name abbrevid=5 op0=4/> blob data = 'C::i'
+ // CHECK-NEXT: <Access abbrevid=6 op0=3/>
+ // CHECK-NEXT: </MemberTypeBlock>
+// CHECK-NEXT: </RecordBlock>
diff --git a/clang-tools-extra/test/clang-doc/mapper-union.cpp b/clang-tools-extra/test/clang-doc/mapper-union.cpp
new file mode 100644
index 00000000000..33b0aa9ac1a
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/mapper-union.cpp
@@ -0,0 +1,29 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+// RUN: clang-doc --dump-mapper -doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: llvm-bcanalyzer %t/docs/bc/0B8A6B938B939B77C6325CCCC8AA3E938BF9E2E8.bc --dump | FileCheck %s
+
+union D { int X; int Y; };
+
+// CHECK: <BLOCKINFO_BLOCK/>
+// CHECK-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+ // CHECK-NEXT: <Version abbrevid=4 op0=1/>
+// CHECK-NEXT: </VersionBlock>
+// CHECK-NEXT: <RecordBlock NumWords={{[0-9]*}} BlockCodeSize=4>
+ // CHECK-NEXT: <USR abbrevid=4 op0=20 op1=11 op2=138 op3=107 op4=147 op5=139 op6=147 op7=155 op8=119 op9=198 op10=50 op11=92 op12=204 op13=200 op14=170 op15=62 op16=147 op17=139 op18=249 op19=226 op20=232/>
+ // CHECK-NEXT: <Name abbrevid=5 op0=1/> blob data = 'D'
+ // CHECK-NEXT: <DefLocation abbrevid=7 op0=8 op1={{[0-9]*}}/> blob data = '{{.*}}'
+ // CHECK-NEXT: <TagType abbrevid=9 op0=2/>
+ // CHECK-NEXT: <MemberTypeBlock NumWords=6 BlockCodeSize=4>
+ // CHECK-NEXT: <Type abbrevid=4 op0=4 op1=3/> blob data = 'int'
+ // CHECK-NEXT: <Name abbrevid=5 op0=4/> blob data = 'D::X'
+ // CHECK-NEXT: <Access abbrevid=6 op0=3/>
+ // CHECK-NEXT: </MemberTypeBlock>
+ // CHECK-NEXT: <MemberTypeBlock NumWords=6 BlockCodeSize=4>
+ // CHECK-NEXT: <Type abbrevid=4 op0=4 op1=3/> blob data = 'int'
+ // CHECK-NEXT: <Name abbrevid=5 op0=4/> blob data = 'D::Y'
+ // CHECK-NEXT: <Access abbrevid=6 op0=3/>
+ // CHECK-NEXT: </MemberTypeBlock>
+// CHECK-NEXT: </RecordBlock>
OpenPOWER on IntegriCloud