diff options
-rw-r--r-- | clang-tools-extra/clang-doc/BitcodeReader.cpp | 11 | ||||
-rw-r--r-- | clang-tools-extra/test/clang-doc/json/nested-namespace.cpp | 36 |
2 files changed, 47 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp b/clang-tools-extra/clang-doc/BitcodeReader.cpp index 2cbf8bf..f756ae6 100644 --- a/clang-tools-extra/clang-doc/BitcodeReader.cpp +++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp @@ -569,6 +569,17 @@ static llvm::Error addReference(T I, Reference &&R, FieldId F) { "invalid type cannot contain Reference"); } +template <> llvm::Error addReference(VarInfo *I, Reference &&R, FieldId F) { + switch (F) { + case FieldId::F_namespace: + I->Namespace.emplace_back(std::move(R)); + return llvm::Error::success(); + default: + return llvm::createStringError(llvm::inconvertibleErrorCode(), + "VarInfo cannot contain this Reference"); + } +} + template <> llvm::Error addReference(TypeInfo *I, Reference &&R, FieldId F) { switch (F) { case FieldId::F_type: diff --git a/clang-tools-extra/test/clang-doc/json/nested-namespace.cpp b/clang-tools-extra/test/clang-doc/json/nested-namespace.cpp new file mode 100644 index 0000000..9b176fe --- /dev/null +++ b/clang-tools-extra/test/clang-doc/json/nested-namespace.cpp @@ -0,0 +1,36 @@ +// RUN: rm -rf %t && mkdir -p %t +// RUN: clang-doc --output=%t --format=json --executor=standalone %s +// RUN: FileCheck %s < %t/nested/index.json --check-prefix=NESTED +// RUN: FileCheck %s < %t/nested/inner/index.json --check-prefix=INNER + +namespace nested { + int Global; + namespace inner { + int InnerGlobal; + } // namespace inner +} // namespace nested + +// NESTED: "Variables": [ +// NESTED-NEXT: { +// NESTED-NEXT: "IsStatic": false, +// NESTED-NEXT: "Location": { +// NESTED-NEXT: "Filename": "{{.*}}nested-namespace.cpp", +// NESTED-NEXT: "LineNumber": 7 +// NESTED-NEXT: }, +// NESTED-NEXT: "Name": "Global", +// NESTED-NEXT: "Namespace": [ +// NESTED-NEXT: "nested" +// NESTED-NEXT: ], + +// INNER: "Variables": [ +// INNER-NEXT: { +// INNER-NEXT: "IsStatic": false, +// INNER-NEXT: "Location": { +// INNER-NEXT: "Filename": "{{.*}}nested-namespace.cpp", +// INNER-NEXT: "LineNumber": 9 +// INNER-NEXT: }, +// INNER-NEXT: "Name": "InnerGlobal", +// INNER-NEXT: "Namespace": [ +// INNER-NEXT: "inner", +// INNER-NEXT: "nested" +// INNER-NEXT: ], |