[llvm-branch-commits] [clang-tools-extra] [clang-doc] document global variables (PR #145070)

2025-06-20 Thread Erick Velez via llvm-branch-commits

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)

2025-06-20 Thread Paul Kirth via llvm-branch-commits

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)

2025-06-20 Thread Paul Kirth via llvm-branch-commits


@@ -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)

2025-06-20 Thread Paul Kirth via llvm-branch-commits

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)

2025-06-20 Thread via llvm-branch-commits

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)

2025-06-20 Thread Erick Velez via llvm-branch-commits

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)

2025-06-20 Thread Erick Velez via llvm-branch-commits

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)

2025-06-20 Thread Erick Velez via llvm-branch-commits

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)

2025-06-20 Thread Erick Velez via llvm-branch-commits

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)

2025-06-20 Thread Erick Velez via llvm-branch-commits

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)

2025-06-20 Thread Erick Velez via llvm-branch-commits

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