From 73a4d54f81fd432655735b94d9e215e4220c687f Mon Sep 17 00:00:00 2001 From: Julie Hockett Date: Wed, 3 Oct 2018 18:25:27 +0000 Subject: [PATCH] [clang-doc] Avoid parsing undefined base classes Don't try to parse base classes for declarations that are not definitions (segfaults, as there is no DefinitionData to access). Differential Revision: https://reviews.llvm.org/D52313 llvm-svn: 343703 --- clang-tools-extra/clang-doc/Serialize.cpp | 3 + clang-tools-extra/test/clang-doc/bc-record.cpp | 178 +++++++++-------- clang-tools-extra/test/clang-doc/mapper-record.cpp | 142 +++++++------ clang-tools-extra/test/clang-doc/md-record.cpp | 5 + clang-tools-extra/test/clang-doc/public-record.cpp | 200 ++++++++++--------- .../test/clang-doc/test_cases/record.cpp | 2 + clang-tools-extra/test/clang-doc/yaml-record.cpp | 220 +++++++++++---------- 7 files changed, 406 insertions(+), 344 deletions(-) diff --git a/clang-tools-extra/clang-doc/Serialize.cpp b/clang-tools-extra/clang-doc/Serialize.cpp index 4508221..eb72c19 100644 --- a/clang-tools-extra/clang-doc/Serialize.cpp +++ b/clang-tools-extra/clang-doc/Serialize.cpp @@ -244,6 +244,9 @@ static void parseParameters(FunctionInfo &I, const FunctionDecl *D) { } 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; diff --git a/clang-tools-extra/test/clang-doc/bc-record.cpp b/clang-tools-extra/test/clang-doc/bc-record.cpp index 053954a..07f0da2 100644 --- a/clang-tools-extra/test/clang-doc/bc-record.cpp +++ b/clang-tools-extra/test/clang-doc/bc-record.cpp @@ -39,6 +39,8 @@ class X { 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 @@ class X { // 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: diff --git a/clang-tools-extra/test/clang-doc/mapper-record.cpp b/clang-tools-extra/test/clang-doc/mapper-record.cpp index 9f69921..90f76b5 100644 --- a/clang-tools-extra/test/clang-doc/mapper-record.cpp +++ b/clang-tools-extra/test/clang-doc/mapper-record.cpp @@ -39,6 +39,8 @@ class X { 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 @@ class X { // 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: - -// RUN: llvm-bcanalyzer --dump %t/docs/bc/0921737541208B8FA9BB42B60F78AC1D779AA054.bc | FileCheck %s --check-prefix CHECK-5 +// 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/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: - -// RUN: llvm-bcanalyzer --dump %t/docs/bc/E3B54702FABFF4037025BA194FC27C47006330B5.bc | FileCheck %s --check-prefix CHECK-6 +// 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/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: diff --git a/clang-tools-extra/test/clang-doc/md-record.cpp b/clang-tools-extra/test/clang-doc/md-record.cpp index 1c5a1ad..0d3e0cc 100644 --- a/clang-tools-extra/test/clang-doc/md-record.cpp +++ b/clang-tools-extra/test/clang-doc/md-record.cpp @@ -39,6 +39,8 @@ class X { 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 @@ class X { // 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 diff --git a/clang-tools-extra/test/clang-doc/public-record.cpp b/clang-tools-extra/test/clang-doc/public-record.cpp index d330219..2f3aca9 100644 --- a/clang-tools-extra/test/clang-doc/public-record.cpp +++ b/clang-tools-extra/test/clang-doc/public-record.cpp @@ -39,6 +39,8 @@ class X { 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 @@ class X { // 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: ... diff --git a/clang-tools-extra/test/clang-doc/test_cases/record.cpp b/clang-tools-extra/test/clang-doc/test_cases/record.cpp index 03419a9..d712329 100644 --- a/clang-tools-extra/test/clang-doc/test_cases/record.cpp +++ b/clang-tools-extra/test/clang-doc/test_cases/record.cpp @@ -38,3 +38,5 @@ class F : virtual private D, public E {}; class X { class Y {}; }; + +class G; diff --git a/clang-tools-extra/test/clang-doc/yaml-record.cpp b/clang-tools-extra/test/clang-doc/yaml-record.cpp index 2006baa..0b4e288 100644 --- a/clang-tools-extra/test/clang-doc/yaml-record.cpp +++ b/clang-tools-extra/test/clang-doc/yaml-record.cpp @@ -39,6 +39,8 @@ class X { 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 @@ class X { // 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: ... -- 2.7.4