[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
https://github.com/evelez7 updated
https://github.com/llvm/llvm-project/pull/145070
>From fa5f1cb09df62f018e5b7b53ccec4b77d94d1828 Mon Sep 17 00:00:00 2001
From: Erick Velez
Date: Wed, 18 Jun 2025 16:36:49 -0700
Subject: [PATCH] [clang-doc] document global variables
---
clang-tools-extra/clang-doc/BitcodeReader.cpp | 40 ++
clang-tools-extra/clang-doc/BitcodeWriter.cpp | 32 +--
clang-tools-extra/clang-doc/BitcodeWriter.h | 6 +++
clang-tools-extra/clang-doc/HTMLGenerator.cpp | 3 ++
.../clang-doc/HTMLMustacheGenerator.cpp | 2 +
clang-tools-extra/clang-doc/JSONGenerator.cpp | 14 +++
clang-tools-extra/clang-doc/MDGenerator.cpp | 4 ++
clang-tools-extra/clang-doc/Mapper.cpp| 6 +++
clang-tools-extra/clang-doc/Mapper.h | 1 +
.../clang-doc/Representation.cpp | 16
clang-tools-extra/clang-doc/Representation.h | 14 ++-
clang-tools-extra/clang-doc/Serialize.cpp | 27
clang-tools-extra/clang-doc/Serialize.h | 4 ++
clang-tools-extra/clang-doc/YAMLGenerator.cpp | 1 +
.../test/clang-doc/json/namespace.cpp | 41 +--
.../unittests/clang-doc/BitcodeTest.cpp | 2 +
16 files changed, 188 insertions(+), 25 deletions(-)
diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp
b/clang-tools-extra/clang-doc/BitcodeReader.cpp
index 66852931226bf..cbdd5d245b8de 100644
--- a/clang-tools-extra/clang-doc/BitcodeReader.cpp
+++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp
@@ -93,6 +93,7 @@ static llvm::Error decodeRecord(const Record &R, InfoType
&Field,
case InfoType::IT_enum:
case InfoType::IT_typedef:
case InfoType::IT_concept:
+ case InfoType::IT_variable:
Field = IT;
return llvm::Error::success();
}
@@ -416,6 +417,23 @@ static llvm::Error parseRecord(const Record &R, unsigned
ID,
"invalid field for ConstraintInfo");
}
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+ llvm::StringRef Blob, VarInfo *I) {
+ switch (ID) {
+ case VAR_USR:
+return decodeRecord(R, I->USR, Blob);
+ case VAR_NAME:
+return decodeRecord(R, I->Name, Blob);
+ case VAR_DEFLOCATION:
+return decodeRecord(R, I->DefLoc, Blob);
+ case VAR_IS_STATIC:
+return decodeRecord(R, I->IsStatic, Blob);
+ default:
+return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "invalid field for VarInfo");
+ }
+}
+
template static llvm::Expected getCommentInfo(T I)
{
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid type cannot contain CommentInfo");
@@ -458,6 +476,10 @@ template <> llvm::Expected
getCommentInfo(ConceptInfo *I) {
return &I->Description.emplace_back();
}
+template <> Expected getCommentInfo(VarInfo *I) {
+ return &I->Description.emplace_back();
+}
+
// When readSubBlock encounters a TypeInfo sub-block, it calls addTypeInfo on
// the parent block to set it. The template specializations define what to do
// for each supported parent block.
@@ -497,6 +519,11 @@ template <> llvm::Error addTypeInfo(TypedefInfo *I,
TypeInfo &&T) {
return llvm::Error::success();
}
+template <> llvm::Error addTypeInfo(VarInfo *I, TypeInfo &&T) {
+ I->Type = std::move(T);
+ return llvm::Error::success();
+}
+
template
static llvm::Error addReference(T I, Reference &&R, FieldId F) {
return llvm::createStringError(llvm::inconvertibleErrorCode(),
@@ -643,6 +670,9 @@ template <> void addChild(NamespaceInfo *I, TypedefInfo
&&R) {
template <> void addChild(NamespaceInfo *I, ConceptInfo &&R) {
I->Children.Concepts.emplace_back(std::move(R));
}
+template <> void addChild(NamespaceInfo *I, VarInfo &&R) {
+ I->Children.Variables.emplace_back(std::move(R));
+}
// Record children:
template <> void addChild(RecordInfo *I, FunctionInfo &&R) {
@@ -887,6 +917,13 @@ llvm::Error ClangDocBitcodeReader::readSubBlock(unsigned
ID, T I) {
addChild(I, std::move(CI));
return llvm::Error::success();
}
+ case BI_VAR_BLOCK_ID: {
+VarInfo VI;
+if (auto Err = readBlock(ID, &VI))
+ return Err;
+addChild(I, std::move(VI));
+return llvm::Error::success();
+ }
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid subblock type");
@@ -996,6 +1033,8 @@ ClangDocBitcodeReader::readBlockToInfo(unsigned ID) {
return createInfo(ID);
case BI_FUNCTION_BLOCK_ID:
return createInfo(ID);
+ case BI_VAR_BLOCK_ID:
+return createInfo(ID);
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"cannot create info");
@@ -1035,6 +1074,7 @@ ClangDocBitcodeReader::readBitcode() {
case BI_ENUM_BLOCK_ID:
case BI_TYPEDEF_BLOCK_ID:
case BI_CONCEPT_BLOCK_ID:
+case BI_VAR_BLOCK_ID:
case BI_FUNCTION_BLOCK_ID: {
[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
https://github.com/ilovepi edited https://github.com/llvm/llvm-project/pull/145070 ___ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
@@ -25,7 +24,7 @@ typedef int MyTypedef;
// CHECK-NEXT: {
// CHECK-NEXT:"Location": {
// CHECK-NEXT: "Filename": "{{.*}}namespace.cpp",
-// CHECK-NEXT: "LineNumber": 15
+// CHECK-NEXT: "LineNumber": 14
ilovepi wrote:
Should we use LINE expressions? not sure it will help too much, but it may be a
good idea to move all these bits closer to the code ... I'm not sure one way or
the other. We're not very consistent about it, in any case.
https://github.com/llvm/llvm-project/pull/145070
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
https://github.com/ilovepi approved this pull request. LGTM, w/ one Q about the test expr. I could go either way on that, so its up to you. https://github.com/llvm/llvm-project/pull/145070 ___ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
llvmbot wrote:
@llvm/pr-subscribers-clang-tools-extra
Author: Erick Velez (evelez7)
Changes
Visit and map VarDecls to document variables declared in namespace scope.
---
Patch is 23.42 KiB, truncated to 20.00 KiB below, full version:
https://github.com/llvm/llvm-project/pull/145070.diff
16 Files Affected:
- (modified) clang-tools-extra/clang-doc/BitcodeReader.cpp (+40)
- (modified) clang-tools-extra/clang-doc/BitcodeWriter.cpp (+29-3)
- (modified) clang-tools-extra/clang-doc/BitcodeWriter.h (+6)
- (modified) clang-tools-extra/clang-doc/HTMLGenerator.cpp (+3)
- (modified) clang-tools-extra/clang-doc/HTMLMustacheGenerator.cpp (+2)
- (modified) clang-tools-extra/clang-doc/JSONGenerator.cpp (+14)
- (modified) clang-tools-extra/clang-doc/MDGenerator.cpp (+4)
- (modified) clang-tools-extra/clang-doc/Mapper.cpp (+6)
- (modified) clang-tools-extra/clang-doc/Mapper.h (+1)
- (modified) clang-tools-extra/clang-doc/Representation.cpp (+16)
- (modified) clang-tools-extra/clang-doc/Representation.h (+13-1)
- (modified) clang-tools-extra/clang-doc/Serialize.cpp (+27)
- (modified) clang-tools-extra/clang-doc/Serialize.h (+4)
- (modified) clang-tools-extra/clang-doc/YAMLGenerator.cpp (+1)
- (modified) clang-tools-extra/test/clang-doc/json/namespace.cpp (+20-21)
- (modified) clang-tools-extra/unittests/clang-doc/BitcodeTest.cpp (+2)
``diff
diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp
b/clang-tools-extra/clang-doc/BitcodeReader.cpp
index 66852931226bf..cbdd5d245b8de 100644
--- a/clang-tools-extra/clang-doc/BitcodeReader.cpp
+++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp
@@ -93,6 +93,7 @@ static llvm::Error decodeRecord(const Record &R, InfoType
&Field,
case InfoType::IT_enum:
case InfoType::IT_typedef:
case InfoType::IT_concept:
+ case InfoType::IT_variable:
Field = IT;
return llvm::Error::success();
}
@@ -416,6 +417,23 @@ static llvm::Error parseRecord(const Record &R, unsigned
ID,
"invalid field for ConstraintInfo");
}
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+ llvm::StringRef Blob, VarInfo *I) {
+ switch (ID) {
+ case VAR_USR:
+return decodeRecord(R, I->USR, Blob);
+ case VAR_NAME:
+return decodeRecord(R, I->Name, Blob);
+ case VAR_DEFLOCATION:
+return decodeRecord(R, I->DefLoc, Blob);
+ case VAR_IS_STATIC:
+return decodeRecord(R, I->IsStatic, Blob);
+ default:
+return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "invalid field for VarInfo");
+ }
+}
+
template static llvm::Expected getCommentInfo(T I)
{
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid type cannot contain CommentInfo");
@@ -458,6 +476,10 @@ template <> llvm::Expected
getCommentInfo(ConceptInfo *I) {
return &I->Description.emplace_back();
}
+template <> Expected getCommentInfo(VarInfo *I) {
+ return &I->Description.emplace_back();
+}
+
// When readSubBlock encounters a TypeInfo sub-block, it calls addTypeInfo on
// the parent block to set it. The template specializations define what to do
// for each supported parent block.
@@ -497,6 +519,11 @@ template <> llvm::Error addTypeInfo(TypedefInfo *I,
TypeInfo &&T) {
return llvm::Error::success();
}
+template <> llvm::Error addTypeInfo(VarInfo *I, TypeInfo &&T) {
+ I->Type = std::move(T);
+ return llvm::Error::success();
+}
+
template
static llvm::Error addReference(T I, Reference &&R, FieldId F) {
return llvm::createStringError(llvm::inconvertibleErrorCode(),
@@ -643,6 +670,9 @@ template <> void addChild(NamespaceInfo *I, TypedefInfo
&&R) {
template <> void addChild(NamespaceInfo *I, ConceptInfo &&R) {
I->Children.Concepts.emplace_back(std::move(R));
}
+template <> void addChild(NamespaceInfo *I, VarInfo &&R) {
+ I->Children.Variables.emplace_back(std::move(R));
+}
// Record children:
template <> void addChild(RecordInfo *I, FunctionInfo &&R) {
@@ -887,6 +917,13 @@ llvm::Error ClangDocBitcodeReader::readSubBlock(unsigned
ID, T I) {
addChild(I, std::move(CI));
return llvm::Error::success();
}
+ case BI_VAR_BLOCK_ID: {
+VarInfo VI;
+if (auto Err = readBlock(ID, &VI))
+ return Err;
+addChild(I, std::move(VI));
+return llvm::Error::success();
+ }
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid subblock type");
@@ -996,6 +1033,8 @@ ClangDocBitcodeReader::readBlockToInfo(unsigned ID) {
return createInfo(ID);
case BI_FUNCTION_BLOCK_ID:
return createInfo(ID);
+ case BI_VAR_BLOCK_ID:
+return createInfo(ID);
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"cannot create info");
@@ -1035,6 +1074,7 @@ ClangDocBitcodeReader::readBitcode() {
case BI_ENUM_BLOCK_ID:
case BI_TYPEDE
[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
https://github.com/evelez7 ready_for_review https://github.com/llvm/llvm-project/pull/145070 ___ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
https://github.com/evelez7 updated
https://github.com/llvm/llvm-project/pull/145070
>From 87a27c94b00fd8b196eed657056cebe41c314d7d Mon Sep 17 00:00:00 2001
From: Erick Velez
Date: Wed, 18 Jun 2025 16:36:49 -0700
Subject: [PATCH] [clang-doc] document global variables
---
clang-tools-extra/clang-doc/BitcodeReader.cpp | 40 ++
clang-tools-extra/clang-doc/BitcodeWriter.cpp | 32 +--
clang-tools-extra/clang-doc/BitcodeWriter.h | 6 +++
clang-tools-extra/clang-doc/HTMLGenerator.cpp | 3 ++
.../clang-doc/HTMLMustacheGenerator.cpp | 2 +
clang-tools-extra/clang-doc/JSONGenerator.cpp | 14 +++
clang-tools-extra/clang-doc/MDGenerator.cpp | 4 ++
clang-tools-extra/clang-doc/Mapper.cpp| 6 +++
clang-tools-extra/clang-doc/Mapper.h | 1 +
.../clang-doc/Representation.cpp | 16
clang-tools-extra/clang-doc/Representation.h | 14 ++-
clang-tools-extra/clang-doc/Serialize.cpp | 27
clang-tools-extra/clang-doc/Serialize.h | 4 ++
clang-tools-extra/clang-doc/YAMLGenerator.cpp | 1 +
.../test/clang-doc/json/namespace.cpp | 41 +--
.../unittests/clang-doc/BitcodeTest.cpp | 2 +
16 files changed, 188 insertions(+), 25 deletions(-)
diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp
b/clang-tools-extra/clang-doc/BitcodeReader.cpp
index 66852931226bf..cbdd5d245b8de 100644
--- a/clang-tools-extra/clang-doc/BitcodeReader.cpp
+++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp
@@ -93,6 +93,7 @@ static llvm::Error decodeRecord(const Record &R, InfoType
&Field,
case InfoType::IT_enum:
case InfoType::IT_typedef:
case InfoType::IT_concept:
+ case InfoType::IT_variable:
Field = IT;
return llvm::Error::success();
}
@@ -416,6 +417,23 @@ static llvm::Error parseRecord(const Record &R, unsigned
ID,
"invalid field for ConstraintInfo");
}
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+ llvm::StringRef Blob, VarInfo *I) {
+ switch (ID) {
+ case VAR_USR:
+return decodeRecord(R, I->USR, Blob);
+ case VAR_NAME:
+return decodeRecord(R, I->Name, Blob);
+ case VAR_DEFLOCATION:
+return decodeRecord(R, I->DefLoc, Blob);
+ case VAR_IS_STATIC:
+return decodeRecord(R, I->IsStatic, Blob);
+ default:
+return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "invalid field for VarInfo");
+ }
+}
+
template static llvm::Expected getCommentInfo(T I)
{
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid type cannot contain CommentInfo");
@@ -458,6 +476,10 @@ template <> llvm::Expected
getCommentInfo(ConceptInfo *I) {
return &I->Description.emplace_back();
}
+template <> Expected getCommentInfo(VarInfo *I) {
+ return &I->Description.emplace_back();
+}
+
// When readSubBlock encounters a TypeInfo sub-block, it calls addTypeInfo on
// the parent block to set it. The template specializations define what to do
// for each supported parent block.
@@ -497,6 +519,11 @@ template <> llvm::Error addTypeInfo(TypedefInfo *I,
TypeInfo &&T) {
return llvm::Error::success();
}
+template <> llvm::Error addTypeInfo(VarInfo *I, TypeInfo &&T) {
+ I->Type = std::move(T);
+ return llvm::Error::success();
+}
+
template
static llvm::Error addReference(T I, Reference &&R, FieldId F) {
return llvm::createStringError(llvm::inconvertibleErrorCode(),
@@ -643,6 +670,9 @@ template <> void addChild(NamespaceInfo *I, TypedefInfo
&&R) {
template <> void addChild(NamespaceInfo *I, ConceptInfo &&R) {
I->Children.Concepts.emplace_back(std::move(R));
}
+template <> void addChild(NamespaceInfo *I, VarInfo &&R) {
+ I->Children.Variables.emplace_back(std::move(R));
+}
// Record children:
template <> void addChild(RecordInfo *I, FunctionInfo &&R) {
@@ -887,6 +917,13 @@ llvm::Error ClangDocBitcodeReader::readSubBlock(unsigned
ID, T I) {
addChild(I, std::move(CI));
return llvm::Error::success();
}
+ case BI_VAR_BLOCK_ID: {
+VarInfo VI;
+if (auto Err = readBlock(ID, &VI))
+ return Err;
+addChild(I, std::move(VI));
+return llvm::Error::success();
+ }
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid subblock type");
@@ -996,6 +1033,8 @@ ClangDocBitcodeReader::readBlockToInfo(unsigned ID) {
return createInfo(ID);
case BI_FUNCTION_BLOCK_ID:
return createInfo(ID);
+ case BI_VAR_BLOCK_ID:
+return createInfo(ID);
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"cannot create info");
@@ -1035,6 +1074,7 @@ ClangDocBitcodeReader::readBitcode() {
case BI_ENUM_BLOCK_ID:
case BI_TYPEDEF_BLOCK_ID:
case BI_CONCEPT_BLOCK_ID:
+case BI_VAR_BLOCK_ID:
case BI_FUNCTION_BLOCK_ID: {
[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
https://github.com/evelez7 updated
https://github.com/llvm/llvm-project/pull/145070
>From 87a27c94b00fd8b196eed657056cebe41c314d7d Mon Sep 17 00:00:00 2001
From: Erick Velez
Date: Wed, 18 Jun 2025 16:36:49 -0700
Subject: [PATCH] [clang-doc] document global variables
---
clang-tools-extra/clang-doc/BitcodeReader.cpp | 40 ++
clang-tools-extra/clang-doc/BitcodeWriter.cpp | 32 +--
clang-tools-extra/clang-doc/BitcodeWriter.h | 6 +++
clang-tools-extra/clang-doc/HTMLGenerator.cpp | 3 ++
.../clang-doc/HTMLMustacheGenerator.cpp | 2 +
clang-tools-extra/clang-doc/JSONGenerator.cpp | 14 +++
clang-tools-extra/clang-doc/MDGenerator.cpp | 4 ++
clang-tools-extra/clang-doc/Mapper.cpp| 6 +++
clang-tools-extra/clang-doc/Mapper.h | 1 +
.../clang-doc/Representation.cpp | 16
clang-tools-extra/clang-doc/Representation.h | 14 ++-
clang-tools-extra/clang-doc/Serialize.cpp | 27
clang-tools-extra/clang-doc/Serialize.h | 4 ++
clang-tools-extra/clang-doc/YAMLGenerator.cpp | 1 +
.../test/clang-doc/json/namespace.cpp | 41 +--
.../unittests/clang-doc/BitcodeTest.cpp | 2 +
16 files changed, 188 insertions(+), 25 deletions(-)
diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp
b/clang-tools-extra/clang-doc/BitcodeReader.cpp
index 66852931226bf..cbdd5d245b8de 100644
--- a/clang-tools-extra/clang-doc/BitcodeReader.cpp
+++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp
@@ -93,6 +93,7 @@ static llvm::Error decodeRecord(const Record &R, InfoType
&Field,
case InfoType::IT_enum:
case InfoType::IT_typedef:
case InfoType::IT_concept:
+ case InfoType::IT_variable:
Field = IT;
return llvm::Error::success();
}
@@ -416,6 +417,23 @@ static llvm::Error parseRecord(const Record &R, unsigned
ID,
"invalid field for ConstraintInfo");
}
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+ llvm::StringRef Blob, VarInfo *I) {
+ switch (ID) {
+ case VAR_USR:
+return decodeRecord(R, I->USR, Blob);
+ case VAR_NAME:
+return decodeRecord(R, I->Name, Blob);
+ case VAR_DEFLOCATION:
+return decodeRecord(R, I->DefLoc, Blob);
+ case VAR_IS_STATIC:
+return decodeRecord(R, I->IsStatic, Blob);
+ default:
+return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "invalid field for VarInfo");
+ }
+}
+
template static llvm::Expected getCommentInfo(T I)
{
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid type cannot contain CommentInfo");
@@ -458,6 +476,10 @@ template <> llvm::Expected
getCommentInfo(ConceptInfo *I) {
return &I->Description.emplace_back();
}
+template <> Expected getCommentInfo(VarInfo *I) {
+ return &I->Description.emplace_back();
+}
+
// When readSubBlock encounters a TypeInfo sub-block, it calls addTypeInfo on
// the parent block to set it. The template specializations define what to do
// for each supported parent block.
@@ -497,6 +519,11 @@ template <> llvm::Error addTypeInfo(TypedefInfo *I,
TypeInfo &&T) {
return llvm::Error::success();
}
+template <> llvm::Error addTypeInfo(VarInfo *I, TypeInfo &&T) {
+ I->Type = std::move(T);
+ return llvm::Error::success();
+}
+
template
static llvm::Error addReference(T I, Reference &&R, FieldId F) {
return llvm::createStringError(llvm::inconvertibleErrorCode(),
@@ -643,6 +670,9 @@ template <> void addChild(NamespaceInfo *I, TypedefInfo
&&R) {
template <> void addChild(NamespaceInfo *I, ConceptInfo &&R) {
I->Children.Concepts.emplace_back(std::move(R));
}
+template <> void addChild(NamespaceInfo *I, VarInfo &&R) {
+ I->Children.Variables.emplace_back(std::move(R));
+}
// Record children:
template <> void addChild(RecordInfo *I, FunctionInfo &&R) {
@@ -887,6 +917,13 @@ llvm::Error ClangDocBitcodeReader::readSubBlock(unsigned
ID, T I) {
addChild(I, std::move(CI));
return llvm::Error::success();
}
+ case BI_VAR_BLOCK_ID: {
+VarInfo VI;
+if (auto Err = readBlock(ID, &VI))
+ return Err;
+addChild(I, std::move(VI));
+return llvm::Error::success();
+ }
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid subblock type");
@@ -996,6 +1033,8 @@ ClangDocBitcodeReader::readBlockToInfo(unsigned ID) {
return createInfo(ID);
case BI_FUNCTION_BLOCK_ID:
return createInfo(ID);
+ case BI_VAR_BLOCK_ID:
+return createInfo(ID);
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"cannot create info");
@@ -1035,6 +1074,7 @@ ClangDocBitcodeReader::readBitcode() {
case BI_ENUM_BLOCK_ID:
case BI_TYPEDEF_BLOCK_ID:
case BI_CONCEPT_BLOCK_ID:
+case BI_VAR_BLOCK_ID:
case BI_FUNCTION_BLOCK_ID: {
[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
https://github.com/evelez7 edited https://github.com/llvm/llvm-project/pull/145070 ___ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
https://github.com/evelez7 created
https://github.com/llvm/llvm-project/pull/145070
None
>From 7c0658cc9cbf5d28125ecbfed4b95667cb1ccecf Mon Sep 17 00:00:00 2001
From: Erick Velez
Date: Wed, 18 Jun 2025 16:36:49 -0700
Subject: [PATCH] [clang-doc] document global variables
---
clang-tools-extra/clang-doc/BitcodeReader.cpp | 40 ++
clang-tools-extra/clang-doc/BitcodeWriter.cpp | 32 +--
clang-tools-extra/clang-doc/BitcodeWriter.h | 6 +++
clang-tools-extra/clang-doc/HTMLGenerator.cpp | 3 ++
.../clang-doc/HTMLMustacheGenerator.cpp | 2 +
clang-tools-extra/clang-doc/JSONGenerator.cpp | 14 +++
clang-tools-extra/clang-doc/MDGenerator.cpp | 4 ++
clang-tools-extra/clang-doc/Mapper.cpp| 6 +++
clang-tools-extra/clang-doc/Mapper.h | 1 +
.../clang-doc/Representation.cpp | 16
clang-tools-extra/clang-doc/Representation.h | 14 ++-
clang-tools-extra/clang-doc/Serialize.cpp | 27
clang-tools-extra/clang-doc/Serialize.h | 4 ++
clang-tools-extra/clang-doc/YAMLGenerator.cpp | 1 +
.../test/clang-doc/json/namespace.cpp | 41 +--
.../unittests/clang-doc/BitcodeTest.cpp | 2 +
16 files changed, 188 insertions(+), 25 deletions(-)
diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp
b/clang-tools-extra/clang-doc/BitcodeReader.cpp
index 5b70280e7dba8..063d19f64 100644
--- a/clang-tools-extra/clang-doc/BitcodeReader.cpp
+++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp
@@ -93,6 +93,7 @@ static llvm::Error decodeRecord(const Record &R, InfoType
&Field,
case InfoType::IT_enum:
case InfoType::IT_typedef:
case InfoType::IT_concept:
+ case InfoType::IT_variable:
Field = IT;
return llvm::Error::success();
}
@@ -416,6 +417,23 @@ static llvm::Error parseRecord(const Record &R, unsigned
ID,
"invalid field for ConstraintInfo");
}
+static llvm::Error parseRecord(const Record &R, unsigned ID,
+ llvm::StringRef Blob, VarInfo *I) {
+ switch (ID) {
+ case VAR_USR:
+return decodeRecord(R, I->USR, Blob);
+ case VAR_NAME:
+return decodeRecord(R, I->Name, Blob);
+ case VAR_DEFLOCATION:
+return decodeRecord(R, I->DefLoc, Blob);
+ case VAR_IS_STATIC:
+return decodeRecord(R, I->IsStatic, Blob);
+ default:
+return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "invalid field for VarInfo");
+ }
+}
+
template static llvm::Expected getCommentInfo(T I)
{
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid type cannot contain CommentInfo");
@@ -458,6 +476,10 @@ template <> llvm::Expected
getCommentInfo(ConceptInfo *I) {
return &I->Description.emplace_back();
}
+template <> Expected getCommentInfo(VarInfo *I) {
+ return &I->Description.emplace_back();
+}
+
// When readSubBlock encounters a TypeInfo sub-block, it calls addTypeInfo on
// the parent block to set it. The template specializations define what to do
// for each supported parent block.
@@ -497,6 +519,11 @@ template <> llvm::Error addTypeInfo(TypedefInfo *I,
TypeInfo &&T) {
return llvm::Error::success();
}
+template <> llvm::Error addTypeInfo(VarInfo *I, TypeInfo &&T) {
+ I->Type = std::move(T);
+ return llvm::Error::success();
+}
+
template
static llvm::Error addReference(T I, Reference &&R, FieldId F) {
return llvm::createStringError(llvm::inconvertibleErrorCode(),
@@ -644,6 +671,9 @@ template <> void addChild(NamespaceInfo *I, TypedefInfo
&&R) {
template <> void addChild(NamespaceInfo *I, ConceptInfo &&R) {
I->Children.Concepts.emplace_back(std::move(R));
}
+template <> void addChild(NamespaceInfo *I, VarInfo &&R) {
+ I->Children.Variables.emplace_back(std::move(R));
+}
// Record children:
template <> void addChild(RecordInfo *I, FunctionInfo &&R) {
@@ -886,6 +916,13 @@ llvm::Error ClangDocBitcodeReader::readSubBlock(unsigned
ID, T I) {
addChild(I, std::move(CI));
return llvm::Error::success();
}
+ case BI_VAR_BLOCK_ID: {
+VarInfo VI;
+if (auto Err = readBlock(ID, &VI))
+ return Err;
+addChild(I, std::move(VI));
+return llvm::Error::success();
+ }
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid subblock type");
@@ -995,6 +1032,8 @@ ClangDocBitcodeReader::readBlockToInfo(unsigned ID) {
return createInfo(ID);
case BI_FUNCTION_BLOCK_ID:
return createInfo(ID);
+ case BI_VAR_BLOCK_ID:
+return createInfo(ID);
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"cannot create info");
@@ -1034,6 +1073,7 @@ ClangDocBitcodeReader::readBitcode() {
case BI_ENUM_BLOCK_ID:
case BI_TYPEDEF_BLOCK_ID:
case BI_CONCEPT_BLOCK_ID:
+case BI_VAR_BLOCK_ID:
case BI_FUNCTION_BLOCK_
[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)
evelez7 wrote: > [!WARNING] > This pull request is not mergeable via GitHub because a downstack PR is > open. Once all requirements are satisfied, merge this PR as a stack href="https://app.graphite.dev/github/pr/llvm/llvm-project/145070?utm_source=stack-comment-downstack-mergeability-warning"; > >on Graphite. > https://graphite.dev/docs/merge-pull-requests";>Learn more * **#145070** https://app.graphite.dev/github/pr/llvm/llvm-project/145070?utm_source=stack-comment-icon"; target="_blank">https://static.graphite.dev/graphite-32x32-black.png"; alt="Graphite" width="10px" height="10px"/> 👈 https://app.graphite.dev/github/pr/llvm/llvm-project/145070?utm_source=stack-comment-view-in-graphite"; target="_blank">(View in Graphite) * **#145069** https://app.graphite.dev/github/pr/llvm/llvm-project/145069?utm_source=stack-comment-icon"; target="_blank">https://static.graphite.dev/graphite-32x32-black.png"; alt="Graphite" width="10px" height="10px"/> * **#144430** https://app.graphite.dev/github/pr/llvm/llvm-project/144430?utm_source=stack-comment-icon"; target="_blank">https://static.graphite.dev/graphite-32x32-black.png"; alt="Graphite" width="10px" height="10px"/> * **#144160** https://app.graphite.dev/github/pr/llvm/llvm-project/144160?utm_source=stack-comment-icon"; target="_blank">https://static.graphite.dev/graphite-32x32-black.png"; alt="Graphite" width="10px" height="10px"/> * `main` This stack of pull requests is managed by https://graphite.dev?utm-source=stack-comment";>Graphite. Learn more about https://stacking.dev/?utm_source=stack-comment";>stacking. https://github.com/llvm/llvm-project/pull/145070 ___ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
