aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clang-doc/BitcodeReader.cpp11
-rw-r--r--clang-tools-extra/test/clang-doc/json/nested-namespace.cpp36
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: ],