Index: clang-tools-extra/trunk/clang-doc/Serialize.cpp
===================================================================
--- clang-tools-extra/trunk/clang-doc/Serialize.cpp
+++ clang-tools-extra/trunk/clang-doc/Serialize.cpp
@@ -244,6 +244,9 @@
}
static void parseBases(RecordInfo &I, const CXXRecordDecl *D) {
+ // Don't parse bases if this isn't a definition.
+ if (!D->isThisDeclarationADefinition())
+ return;
for (const CXXBaseSpecifier &B : D->bases()) {
if (B.isVirtual())
continue;
Index: clang-tools-extra/trunk/test/clang-doc/bc-record.cpp
===================================================================
--- clang-tools-extra/trunk/test/clang-doc/bc-record.cpp
+++ clang-tools-extra/trunk/test/clang-doc/bc-record.cpp
@@ -39,6 +39,8 @@
class Y {};
};
+class G;
+
// RUN: clang-doc --dump-intermediate --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
@@ -158,118 +160,130 @@
// CHECK-2-NEXT:
// CHECK-2-NEXT:
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/641AB4A3D36399954ACDE29C7A8833032BF40472.bc | FileCheck %s --check-prefix CHECK-3
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/4202E8BF0ECB12AE354C8499C52725B0EE30AED5.bc | FileCheck %s --check-prefix CHECK-3
// CHECK-3:
// CHECK-3-NEXT:
// CHECK-3-NEXT:
// CHECK-3-NEXT:
-// CHECK-3-NEXT:
+// CHECK-3-NEXT:
// CHECK-3-NEXT:
-// CHECK-3-NEXT: blob data = 'Y'
-// CHECK-3-NEXT:
-// CHECK-3-NEXT:
-// CHECK-3-NEXT: blob data = 'X'
-// CHECK-3-NEXT:
-// CHECK-3-NEXT:
-// CHECK-3-NEXT:
-// CHECK-3-NEXT: blob data = '{{.*}}'
+// CHECK-3-NEXT: blob data = 'G'
+// CHECK-3-NEXT: blob data = '{{.*}}'
// CHECK-3-NEXT:
// CHECK-3-NEXT:
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-4
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/641AB4A3D36399954ACDE29C7A8833032BF40472.bc | FileCheck %s --check-prefix CHECK-4
// CHECK-4:
// CHECK-4-NEXT:
// CHECK-4-NEXT:
// CHECK-4-NEXT:
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
-// CHECK-4-NEXT: blob data = 'H'
-// CHECK-4-NEXT: blob data = '{{.*}}'
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
-// CHECK-4-NEXT: blob data = 'void'
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
+// CHECK-4-NEXT:
+// CHECK-4-NEXT:
+// CHECK-4-NEXT: blob data = 'Y'
+// CHECK-4-NEXT:
// CHECK-4-NEXT:
-// CHECK-4-NEXT: blob data = 'B'
-// CHECK-4-NEXT: blob data = '{{.*}}'
-// CHECK-4-NEXT: blob data = 'X'
-// CHECK-4-NEXT: blob data = 'Y'
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
-// CHECK-4-NEXT: blob data = 'Bc'
-// CHECK-4-NEXT: blob data = '{{.*}}'
-// CHECK-4-NEXT:
-// CHECK-4-NEXT: blob data = 'A'
-// CHECK-4-NEXT: blob data = 'B'
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
+// CHECK-4-NEXT: blob data = 'X'
+// CHECK-4-NEXT:
+// CHECK-4-NEXT:
+// CHECK-4-NEXT:
+// CHECK-4-NEXT: blob data = '{{.*}}'
+// CHECK-4-NEXT:
+// CHECK-4-NEXT:
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/0921737541208B8FA9BB42B60F78AC1D779AA054.bc | FileCheck %s --check-prefix CHECK-5
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-5
// CHECK-5:
// CHECK-5-NEXT:
// CHECK-5-NEXT:
// CHECK-5-NEXT:
-// CHECK-5-NEXT:
-// CHECK-5-NEXT:
-// CHECK-5-NEXT: blob data = 'D'
-// CHECK-5-NEXT: blob data = '{{.*}}'
-// CHECK-5-NEXT:
-// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT: blob data = 'H'
+// CHECK-5-NEXT: blob data = '{{.*}}'
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT: blob data = 'void'
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT: blob data = 'B'
+// CHECK-5-NEXT: blob data = '{{.*}}'
+// CHECK-5-NEXT: blob data = 'X'
+// CHECK-5-NEXT: blob data = 'Y'
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT: blob data = 'Bc'
+// CHECK-5-NEXT: blob data = '{{.*}}'
+// CHECK-5-NEXT:
+// CHECK-5-NEXT: blob data = 'A'
+// CHECK-5-NEXT: blob data = 'B'
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/E3B54702FABFF4037025BA194FC27C47006330B5.bc | FileCheck %s --check-prefix CHECK-6
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0921737541208B8FA9BB42B60F78AC1D779AA054.bc | FileCheck %s --check-prefix CHECK-6
// CHECK-6:
// CHECK-6-NEXT:
// CHECK-6-NEXT:
// CHECK-6-NEXT:
-// CHECK-6-NEXT:
+// CHECK-6-NEXT:
// CHECK-6-NEXT:
-// CHECK-6-NEXT: blob data = 'F'
-// CHECK-6-NEXT: blob data = '{{.*}}'
+// CHECK-6-NEXT: blob data = 'D'
+// CHECK-6-NEXT: blob data = '{{.*}}'
// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT: blob data = 'E'
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT: blob data = 'D'
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
// CHECK-6-NEXT:
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/ACE81AFA6627B4CEF2B456FB6E1252925674AF7E.bc | FileCheck %s --check-prefix CHECK-7
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/E3B54702FABFF4037025BA194FC27C47006330B5.bc | FileCheck %s --check-prefix CHECK-7
// CHECK-7:
// CHECK-7-NEXT:
// CHECK-7-NEXT:
// CHECK-7-NEXT:
-// CHECK-7-NEXT:
+// CHECK-7-NEXT:
// CHECK-7-NEXT:
-// CHECK-7-NEXT: blob data = 'A'
-// CHECK-7-NEXT: blob data = '{{.*}}'
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT: blob data = 'int'
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT: blob data = 'X'
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT: blob data = 'int'
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT: blob data = 'Y'
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
+// CHECK-7-NEXT: blob data = 'F'
+// CHECK-7-NEXT: blob data = '{{.*}}'
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT: blob data = 'E'
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT: blob data = 'D'
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
// CHECK-7-NEXT:
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/ACE81AFA6627B4CEF2B456FB6E1252925674AF7E.bc | FileCheck %s --check-prefix CHECK-8
+// CHECK-8:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT: blob data = 'A'
+// CHECK-8-NEXT: blob data = '{{.*}}'
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT: blob data = 'int'
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT: blob data = 'X'
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT: blob data = 'int'
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT: blob data = 'Y'
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
Index: clang-tools-extra/trunk/test/clang-doc/mapper-record.cpp
===================================================================
--- clang-tools-extra/trunk/test/clang-doc/mapper-record.cpp
+++ clang-tools-extra/trunk/test/clang-doc/mapper-record.cpp
@@ -39,6 +39,8 @@
class Y {};
};
+class G;
+
// RUN: clang-doc --dump-mapper --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
@@ -105,98 +107,110 @@
// CHECK-2-NEXT:
// CHECK-2-NEXT:
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/641AB4A3D36399954ACDE29C7A8833032BF40472.bc | FileCheck %s --check-prefix CHECK-3
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/4202E8BF0ECB12AE354C8499C52725B0EE30AED5.bc | FileCheck %s --check-prefix CHECK-3
// CHECK-3:
// CHECK-3-NEXT:
// CHECK-3-NEXT:
// CHECK-3-NEXT:
-// CHECK-3-NEXT:
+// CHECK-3-NEXT:
// CHECK-3-NEXT:
-// CHECK-3-NEXT: blob data = 'Y'
-// CHECK-3-NEXT:
-// CHECK-3-NEXT:
-// CHECK-3-NEXT: blob data = 'X'
-// CHECK-3-NEXT:
-// CHECK-3-NEXT:
-// CHECK-3-NEXT:
-// CHECK-3-NEXT: blob data = '{{.*}}'
+// CHECK-3-NEXT: blob data = 'G'
+// CHECK-3-NEXT: blob data = '{{.*}}'
// CHECK-3-NEXT:
// CHECK-3-NEXT:
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-4
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/641AB4A3D36399954ACDE29C7A8833032BF40472.bc | FileCheck %s --check-prefix CHECK-4
// CHECK-4:
// CHECK-4-NEXT:
// CHECK-4-NEXT:
// CHECK-4-NEXT:
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
+// CHECK-4-NEXT:
+// CHECK-4-NEXT:
+// CHECK-4-NEXT: blob data = 'Y'
+// CHECK-4-NEXT:
// CHECK-4-NEXT:
-// CHECK-4-NEXT: blob data = 'Bc'
-// CHECK-4-NEXT: blob data = '{{.*}}'
-// CHECK-4-NEXT:
-// CHECK-4-NEXT: blob data = 'A'
-// CHECK-4-NEXT: blob data = 'B'
-// CHECK-4-NEXT:
-// CHECK-4-NEXT:
+// CHECK-4-NEXT: blob data = 'X'
+// CHECK-4-NEXT:
+// CHECK-4-NEXT:
+// CHECK-4-NEXT:
+// CHECK-4-NEXT: blob data = '{{.*}}'
+// CHECK-4-NEXT:
+// CHECK-4-NEXT:
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/0921737541208B8FA9BB42B60F78AC1D779AA054.bc | FileCheck %s --check-prefix CHECK-5
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-5
// CHECK-5:
// CHECK-5-NEXT:
// CHECK-5-NEXT:
// CHECK-5-NEXT:
-// CHECK-5-NEXT:
-// CHECK-5-NEXT:
-// CHECK-5-NEXT: blob data = 'D'
-// CHECK-5-NEXT: blob data = '{{.*}}'
-// CHECK-5-NEXT:
-// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
+// CHECK-5-NEXT: blob data = 'Bc'
+// CHECK-5-NEXT: blob data = '{{.*}}'
+// CHECK-5-NEXT:
+// CHECK-5-NEXT: blob data = 'A'
+// CHECK-5-NEXT: blob data = 'B'
+// CHECK-5-NEXT:
+// CHECK-5-NEXT:
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/E3B54702FABFF4037025BA194FC27C47006330B5.bc | FileCheck %s --check-prefix CHECK-6
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0921737541208B8FA9BB42B60F78AC1D779AA054.bc | FileCheck %s --check-prefix CHECK-6
// CHECK-6:
// CHECK-6-NEXT:
// CHECK-6-NEXT:
// CHECK-6-NEXT:
-// CHECK-6-NEXT:
+// CHECK-6-NEXT:
// CHECK-6-NEXT:
-// CHECK-6-NEXT: blob data = 'F'
-// CHECK-6-NEXT: blob data = '{{.*}}'
+// CHECK-6-NEXT: blob data = 'D'
+// CHECK-6-NEXT: blob data = '{{.*}}'
// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT: blob data = 'E'
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT: blob data = 'D'
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
-// CHECK-6-NEXT:
// CHECK-6-NEXT:
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/ACE81AFA6627B4CEF2B456FB6E1252925674AF7E.bc | FileCheck %s --check-prefix CHECK-7
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/E3B54702FABFF4037025BA194FC27C47006330B5.bc | FileCheck %s --check-prefix CHECK-7
// CHECK-7:
// CHECK-7-NEXT:
// CHECK-7-NEXT:
// CHECK-7-NEXT:
-// CHECK-7-NEXT:
+// CHECK-7-NEXT:
// CHECK-7-NEXT:
-// CHECK-7-NEXT: blob data = 'A'
-// CHECK-7-NEXT: blob data = '{{.*}}'
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT: blob data = 'int'
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT: blob data = 'X'
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT: blob data = 'int'
-// CHECK-7-NEXT:
-// CHECK-7-NEXT:
-// CHECK-7-NEXT: blob data = 'Y'
-// CHECK-7-NEXT:
+// CHECK-7-NEXT: blob data = 'F'
+// CHECK-7-NEXT: blob data = '{{.*}}'
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT: blob data = 'E'
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT: blob data = 'D'
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
+// CHECK-7-NEXT:
// CHECK-7-NEXT:
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/ACE81AFA6627B4CEF2B456FB6E1252925674AF7E.bc | FileCheck %s --check-prefix CHECK-8
+// CHECK-8:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT: blob data = 'A'
+// CHECK-8-NEXT: blob data = '{{.*}}'
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT: blob data = 'int'
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT: blob data = 'X'
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT: blob data = 'int'
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
+// CHECK-8-NEXT: blob data = 'Y'
+// CHECK-8-NEXT:
+// CHECK-8-NEXT:
Index: clang-tools-extra/trunk/test/clang-doc/md-record.cpp
===================================================================
--- clang-tools-extra/trunk/test/clang-doc/md-record.cpp
+++ clang-tools-extra/trunk/test/clang-doc/md-record.cpp
@@ -39,6 +39,8 @@
class Y {};
};
+class G;
+
// RUN: clang-doc --format=md --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
@@ -95,3 +97,6 @@
// CHECK-6: ## Members
// CHECK-6: int X
// CHECK-6: int Y
+
+// RUN: cat %t/docs/./G.md | FileCheck %s --check-prefix CHECK-7
+// CHECK-7: # class G
Index: clang-tools-extra/trunk/test/clang-doc/public-record.cpp
===================================================================
--- clang-tools-extra/trunk/test/clang-doc/public-record.cpp
+++ clang-tools-extra/trunk/test/clang-doc/public-record.cpp
@@ -39,6 +39,8 @@
class Y {};
};
+class G;
+
// RUN: clang-doc --format=yaml --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
@@ -90,119 +92,129 @@
// CHECK-2-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
// CHECK-2-NEXT: ...
-// RUN: cat %t/docs/./E.yaml | FileCheck %s --check-prefix CHECK-3
+// RUN: cat %t/docs/./G.yaml | FileCheck %s --check-prefix CHECK-3
// CHECK-3: ---
// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: DefLocation:
-// CHECK-3-NEXT: LineNumber: 25
-// CHECK-3-NEXT: Filename: 'test'
+// CHECK-3-NEXT: Name: 'G'
+// CHECK-3-NEXT: Location:
+// CHECK-3-NEXT: - LineNumber: 42
+// CHECK-3-NEXT: Filename: 'test'
// CHECK-3-NEXT: TagType: Class
-// CHECK-3-NEXT: ChildFunctions:
-// CHECK-3-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: Namespace:
-// CHECK-3-NEXT: - Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: DefLocation:
-// CHECK-3-NEXT: LineNumber: 27
-// CHECK-3-NEXT: Filename: 'test'
-// CHECK-3-NEXT: IsMethod: true
-// CHECK-3-NEXT: Parent:
-// CHECK-3-NEXT: Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: ReturnType:
-// CHECK-3-NEXT: Type:
-// CHECK-3-NEXT: Name: 'void'
-// CHECK-3-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: Name: '~E'
-// CHECK-3-NEXT: Namespace:
-// CHECK-3-NEXT: - Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: DefLocation:
-// CHECK-3-NEXT: LineNumber: 28
-// CHECK-3-NEXT: Filename: 'test'
-// CHECK-3-NEXT: IsMethod: true
-// CHECK-3-NEXT: Parent:
-// CHECK-3-NEXT: Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: ReturnType:
-// CHECK-3-NEXT: Type:
-// CHECK-3-NEXT: Name: 'void'
-// CHECK-3-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: Name: 'ProtectedMethod'
-// CHECK-3-NEXT: Namespace:
-// CHECK-3-NEXT: - Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: DefLocation:
-// CHECK-3-NEXT: LineNumber: 34
-// CHECK-3-NEXT: Filename: 'test'
-// CHECK-3-NEXT: Location:
-// CHECK-3-NEXT: - LineNumber: 31
-// CHECK-3-NEXT: Filename: 'test'
-// CHECK-3-NEXT: IsMethod: true
-// CHECK-3-NEXT: Parent:
-// CHECK-3-NEXT: Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: ReturnType:
-// CHECK-3-NEXT: Type:
-// CHECK-3-NEXT: Name: 'void'
// CHECK-3-NEXT: ...
-// RUN: cat %t/docs/./D.yaml | FileCheck %s --check-prefix CHECK-4
+// RUN: cat %t/docs/./E.yaml | FileCheck %s --check-prefix CHECK-4
// CHECK-4: ---
// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-4-NEXT: Name: 'D'
+// CHECK-4-NEXT: Name: 'E'
// CHECK-4-NEXT: DefLocation:
-// CHECK-4-NEXT: LineNumber: 23
+// CHECK-4-NEXT: LineNumber: 25
// CHECK-4-NEXT: Filename: 'test'
// CHECK-4-NEXT: TagType: Class
+// CHECK-4-NEXT: ChildFunctions:
+// CHECK-4-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: Namespace:
+// CHECK-4-NEXT: - Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: DefLocation:
+// CHECK-4-NEXT: LineNumber: 27
+// CHECK-4-NEXT: Filename: 'test'
+// CHECK-4-NEXT: IsMethod: true
+// CHECK-4-NEXT: Parent:
+// CHECK-4-NEXT: Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: ReturnType:
+// CHECK-4-NEXT: Type:
+// CHECK-4-NEXT: Name: 'void'
+// CHECK-4-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: Name: '~E'
+// CHECK-4-NEXT: Namespace:
+// CHECK-4-NEXT: - Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: DefLocation:
+// CHECK-4-NEXT: LineNumber: 28
+// CHECK-4-NEXT: Filename: 'test'
+// CHECK-4-NEXT: IsMethod: true
+// CHECK-4-NEXT: Parent:
+// CHECK-4-NEXT: Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: ReturnType:
+// CHECK-4-NEXT: Type:
+// CHECK-4-NEXT: Name: 'void'
+// CHECK-4-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: Name: 'ProtectedMethod'
+// CHECK-4-NEXT: Namespace:
+// CHECK-4-NEXT: - Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: DefLocation:
+// CHECK-4-NEXT: LineNumber: 34
+// CHECK-4-NEXT: Filename: 'test'
+// CHECK-4-NEXT: Location:
+// CHECK-4-NEXT: - LineNumber: 31
+// CHECK-4-NEXT: Filename: 'test'
+// CHECK-4-NEXT: IsMethod: true
+// CHECK-4-NEXT: Parent:
+// CHECK-4-NEXT: Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: ReturnType:
+// CHECK-4-NEXT: Type:
+// CHECK-4-NEXT: Name: 'void'
// CHECK-4-NEXT: ...
-// RUN: cat %t/docs/./X.yaml | FileCheck %s --check-prefix CHECK-5
+// RUN: cat %t/docs/./D.yaml | FileCheck %s --check-prefix CHECK-5
// CHECK-5: ---
// CHECK-5-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-5-NEXT: Name: 'X'
+// CHECK-5-NEXT: Name: 'D'
// CHECK-5-NEXT: DefLocation:
-// CHECK-5-NEXT: LineNumber: 38
+// CHECK-5-NEXT: LineNumber: 23
// CHECK-5-NEXT: Filename: 'test'
// CHECK-5-NEXT: TagType: Class
// CHECK-5-NEXT: ...
-// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-6
+// RUN: cat %t/docs/./X.yaml | FileCheck %s --check-prefix CHECK-6
// CHECK-6: ---
// CHECK-6-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-6-NEXT: ChildFunctions:
-// CHECK-6-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-6-NEXT: Name: 'H'
-// CHECK-6-NEXT: DefLocation:
-// CHECK-6-NEXT: LineNumber: 11
-// CHECK-6-NEXT: Filename: 'test'
-// CHECK-6-NEXT: ReturnType:
-// CHECK-6-NEXT: Type:
-// CHECK-6-NEXT: Name: 'void'
-// CHECK-6-NEXT: ChildEnums:
-// CHECK-6-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-6-NEXT: Name: 'B'
-// CHECK-6-NEXT: DefLocation:
-// CHECK-6-NEXT: LineNumber: 17
-// CHECK-6-NEXT: Filename: 'test'
-// CHECK-6-NEXT: Members:
-// CHECK-6-NEXT: - 'X'
-// CHECK-6-NEXT: - 'Y'
-// CHECK-6-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-6-NEXT: Name: 'Bc'
-// CHECK-6-NEXT: DefLocation:
-// CHECK-6-NEXT: LineNumber: 19
-// CHECK-6-NEXT: Filename: 'test'
-// CHECK-6-NEXT: Scoped: true
-// CHECK-6-NEXT: Members:
-// CHECK-6-NEXT: - 'A'
-// CHECK-6-NEXT: - 'B'
+// CHECK-6-NEXT: Name: 'X'
+// CHECK-6-NEXT: DefLocation:
+// CHECK-6-NEXT: LineNumber: 38
+// CHECK-6-NEXT: Filename: 'test'
+// CHECK-6-NEXT: TagType: Class
// CHECK-6-NEXT: ...
+
+// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-7
+// CHECK-7: ---
+// CHECK-7-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT: ChildFunctions:
+// CHECK-7-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT: Name: 'H'
+// CHECK-7-NEXT: DefLocation:
+// CHECK-7-NEXT: LineNumber: 11
+// CHECK-7-NEXT: Filename: 'test'
+// CHECK-7-NEXT: ReturnType:
+// CHECK-7-NEXT: Type:
+// CHECK-7-NEXT: Name: 'void'
+// CHECK-7-NEXT: ChildEnums:
+// CHECK-7-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT: Name: 'B'
+// CHECK-7-NEXT: DefLocation:
+// CHECK-7-NEXT: LineNumber: 17
+// CHECK-7-NEXT: Filename: 'test'
+// CHECK-7-NEXT: Members:
+// CHECK-7-NEXT: - 'X'
+// CHECK-7-NEXT: - 'Y'
+// CHECK-7-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT: Name: 'Bc'
+// CHECK-7-NEXT: DefLocation:
+// CHECK-7-NEXT: LineNumber: 19
+// CHECK-7-NEXT: Filename: 'test'
+// CHECK-7-NEXT: Scoped: true
+// CHECK-7-NEXT: Members:
+// CHECK-7-NEXT: - 'A'
+// CHECK-7-NEXT: - 'B'
+// CHECK-7-NEXT: ...
Index: clang-tools-extra/trunk/test/clang-doc/test_cases/record.cpp
===================================================================
--- clang-tools-extra/trunk/test/clang-doc/test_cases/record.cpp
+++ clang-tools-extra/trunk/test/clang-doc/test_cases/record.cpp
@@ -38,3 +38,5 @@
class X {
class Y {};
};
+
+class G;
Index: clang-tools-extra/trunk/test/clang-doc/yaml-record.cpp
===================================================================
--- clang-tools-extra/trunk/test/clang-doc/yaml-record.cpp
+++ clang-tools-extra/trunk/test/clang-doc/yaml-record.cpp
@@ -39,6 +39,8 @@
class Y {};
};
+class G;
+
// RUN: clang-doc --format=yaml --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
@@ -90,133 +92,143 @@
// CHECK-2-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
// CHECK-2-NEXT: ...
-// RUN: cat %t/docs/./E.yaml | FileCheck %s --check-prefix CHECK-3
+// RUN: cat %t/docs/./G.yaml | FileCheck %s --check-prefix CHECK-3
// CHECK-3: ---
// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: DefLocation:
-// CHECK-3-NEXT: LineNumber: 25
-// CHECK-3-NEXT: Filename: 'test'
+// CHECK-3-NEXT: Name: 'G'
+// CHECK-3-NEXT: Location:
+// CHECK-3-NEXT: - LineNumber: 42
+// CHECK-3-NEXT: Filename: 'test'
// CHECK-3-NEXT: TagType: Class
-// CHECK-3-NEXT: ChildFunctions:
-// CHECK-3-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: Namespace:
-// CHECK-3-NEXT: - Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: DefLocation:
-// CHECK-3-NEXT: LineNumber: 27
-// CHECK-3-NEXT: Filename: 'test'
-// CHECK-3-NEXT: IsMethod: true
-// CHECK-3-NEXT: Parent:
-// CHECK-3-NEXT: Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: ReturnType:
-// CHECK-3-NEXT: Type:
-// CHECK-3-NEXT: Name: 'void'
-// CHECK-3-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: Name: '~E'
-// CHECK-3-NEXT: Namespace:
-// CHECK-3-NEXT: - Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: DefLocation:
-// CHECK-3-NEXT: LineNumber: 28
-// CHECK-3-NEXT: Filename: 'test'
-// CHECK-3-NEXT: IsMethod: true
-// CHECK-3-NEXT: Parent:
-// CHECK-3-NEXT: Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: ReturnType:
-// CHECK-3-NEXT: Type:
-// CHECK-3-NEXT: Name: 'void'
-// CHECK-3-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: Name: 'ProtectedMethod'
-// CHECK-3-NEXT: Namespace:
-// CHECK-3-NEXT: - Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: DefLocation:
-// CHECK-3-NEXT: LineNumber: 34
-// CHECK-3-NEXT: Filename: 'test'
-// CHECK-3-NEXT: Location:
-// CHECK-3-NEXT: - LineNumber: 31
-// CHECK-3-NEXT: Filename: 'test'
-// CHECK-3-NEXT: IsMethod: true
-// CHECK-3-NEXT: Parent:
-// CHECK-3-NEXT: Type: Record
-// CHECK-3-NEXT: Name: 'E'
-// CHECK-3-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-3-NEXT: ReturnType:
-// CHECK-3-NEXT: Type:
-// CHECK-3-NEXT: Name: 'void'
// CHECK-3-NEXT: ...
-// RUN: cat %t/docs/./D.yaml | FileCheck %s --check-prefix CHECK-4
+// RUN: cat %t/docs/./E.yaml | FileCheck %s --check-prefix CHECK-4
// CHECK-4: ---
// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-4-NEXT: Name: 'D'
+// CHECK-4-NEXT: Name: 'E'
// CHECK-4-NEXT: DefLocation:
-// CHECK-4-NEXT: LineNumber: 23
+// CHECK-4-NEXT: LineNumber: 25
// CHECK-4-NEXT: Filename: 'test'
// CHECK-4-NEXT: TagType: Class
+// CHECK-4-NEXT: ChildFunctions:
+// CHECK-4-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: Namespace:
+// CHECK-4-NEXT: - Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: DefLocation:
+// CHECK-4-NEXT: LineNumber: 27
+// CHECK-4-NEXT: Filename: 'test'
+// CHECK-4-NEXT: IsMethod: true
+// CHECK-4-NEXT: Parent:
+// CHECK-4-NEXT: Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: ReturnType:
+// CHECK-4-NEXT: Type:
+// CHECK-4-NEXT: Name: 'void'
+// CHECK-4-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: Name: '~E'
+// CHECK-4-NEXT: Namespace:
+// CHECK-4-NEXT: - Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: DefLocation:
+// CHECK-4-NEXT: LineNumber: 28
+// CHECK-4-NEXT: Filename: 'test'
+// CHECK-4-NEXT: IsMethod: true
+// CHECK-4-NEXT: Parent:
+// CHECK-4-NEXT: Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: ReturnType:
+// CHECK-4-NEXT: Type:
+// CHECK-4-NEXT: Name: 'void'
+// CHECK-4-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: Name: 'ProtectedMethod'
+// CHECK-4-NEXT: Namespace:
+// CHECK-4-NEXT: - Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: DefLocation:
+// CHECK-4-NEXT: LineNumber: 34
+// CHECK-4-NEXT: Filename: 'test'
+// CHECK-4-NEXT: Location:
+// CHECK-4-NEXT: - LineNumber: 31
+// CHECK-4-NEXT: Filename: 'test'
+// CHECK-4-NEXT: IsMethod: true
+// CHECK-4-NEXT: Parent:
+// CHECK-4-NEXT: Type: Record
+// CHECK-4-NEXT: Name: 'E'
+// CHECK-4-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: ReturnType:
+// CHECK-4-NEXT: Type:
+// CHECK-4-NEXT: Name: 'void'
// CHECK-4-NEXT: ...
-// RUN: cat %t/docs/./X.yaml | FileCheck %s --check-prefix CHECK-5
+// RUN: cat %t/docs/./D.yaml | FileCheck %s --check-prefix CHECK-5
// CHECK-5: ---
// CHECK-5-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-5-NEXT: Name: 'X'
+// CHECK-5-NEXT: Name: 'D'
// CHECK-5-NEXT: DefLocation:
-// CHECK-5-NEXT: LineNumber: 38
+// CHECK-5-NEXT: LineNumber: 23
// CHECK-5-NEXT: Filename: 'test'
// CHECK-5-NEXT: TagType: Class
// CHECK-5-NEXT: ...
-// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-6
+// RUN: cat %t/docs/./X.yaml | FileCheck %s --check-prefix CHECK-6
// CHECK-6: ---
// CHECK-6-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-6-NEXT: ChildFunctions:
-// CHECK-6-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-6-NEXT: Name: 'H'
-// CHECK-6-NEXT: DefLocation:
-// CHECK-6-NEXT: LineNumber: 11
-// CHECK-6-NEXT: Filename: 'test'
-// CHECK-6-NEXT: ReturnType:
-// CHECK-6-NEXT: Type:
-// CHECK-6-NEXT: Name: 'void'
-// CHECK-6-NEXT: ChildEnums:
-// CHECK-6-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-6-NEXT: Name: 'B'
-// CHECK-6-NEXT: DefLocation:
-// CHECK-6-NEXT: LineNumber: 17
-// CHECK-6-NEXT: Filename: 'test'
-// CHECK-6-NEXT: Members:
-// CHECK-6-NEXT: - 'X'
-// CHECK-6-NEXT: - 'Y'
-// CHECK-6-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-6-NEXT: Name: 'Bc'
-// CHECK-6-NEXT: DefLocation:
-// CHECK-6-NEXT: LineNumber: 19
-// CHECK-6-NEXT: Filename: 'test'
-// CHECK-6-NEXT: Scoped: true
-// CHECK-6-NEXT: Members:
-// CHECK-6-NEXT: - 'A'
-// CHECK-6-NEXT: - 'B'
+// CHECK-6-NEXT: Name: 'X'
+// CHECK-6-NEXT: DefLocation:
+// CHECK-6-NEXT: LineNumber: 38
+// CHECK-6-NEXT: Filename: 'test'
+// CHECK-6-NEXT: TagType: Class
// CHECK-6-NEXT: ...
-// RUN: cat %t/docs/X/Y.yaml | FileCheck %s --check-prefix CHECK-7
+// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-7
// CHECK-7: ---
// CHECK-7-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-7-NEXT: Name: 'Y'
-// CHECK-7-NEXT: Namespace:
-// CHECK-7-NEXT: - Type: Record
-// CHECK-7-NEXT: Name: 'X'
-// CHECK-7-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-7-NEXT: DefLocation:
-// CHECK-7-NEXT: LineNumber: 39
-// CHECK-7-NEXT: Filename: 'test'
-// CHECK-7-NEXT: TagType: Class
+// CHECK-7-NEXT: ChildFunctions:
+// CHECK-7-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT: Name: 'H'
+// CHECK-7-NEXT: DefLocation:
+// CHECK-7-NEXT: LineNumber: 11
+// CHECK-7-NEXT: Filename: 'test'
+// CHECK-7-NEXT: ReturnType:
+// CHECK-7-NEXT: Type:
+// CHECK-7-NEXT: Name: 'void'
+// CHECK-7-NEXT: ChildEnums:
+// CHECK-7-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT: Name: 'B'
+// CHECK-7-NEXT: DefLocation:
+// CHECK-7-NEXT: LineNumber: 17
+// CHECK-7-NEXT: Filename: 'test'
+// CHECK-7-NEXT: Members:
+// CHECK-7-NEXT: - 'X'
+// CHECK-7-NEXT: - 'Y'
+// CHECK-7-NEXT: - USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT: Name: 'Bc'
+// CHECK-7-NEXT: DefLocation:
+// CHECK-7-NEXT: LineNumber: 19
+// CHECK-7-NEXT: Filename: 'test'
+// CHECK-7-NEXT: Scoped: true
+// CHECK-7-NEXT: Members:
+// CHECK-7-NEXT: - 'A'
+// CHECK-7-NEXT: - 'B'
// CHECK-7-NEXT: ...
+
+// RUN: cat %t/docs/X/Y.yaml | FileCheck %s --check-prefix CHECK-8
+// CHECK-8: ---
+// CHECK-8-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-8-NEXT: Name: 'Y'
+// CHECK-8-NEXT: Namespace:
+// CHECK-8-NEXT: - Type: Record
+// CHECK-8-NEXT: Name: 'X'
+// CHECK-8-NEXT: USR: '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-8-NEXT: DefLocation:
+// CHECK-8-NEXT: LineNumber: 39
+// CHECK-8-NEXT: Filename: 'test'
+// CHECK-8-NEXT: TagType: Class
+// CHECK-8-NEXT: ...