[clang-tools-extra] 6d81781 - [clang-doc] serialize IsBuiltIn and IsTemplate for types (#146149)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 27 16:17:43 PDT 2025
Author: Erick Velez
Date: 2025-06-27T16:17:39-07:00
New Revision: 6d817810daa16667d8e3de5daf82f801bfba3e00
URL: https://github.com/llvm/llvm-project/commit/6d817810daa16667d8e3de5daf82f801bfba3e00
DIFF: https://github.com/llvm/llvm-project/commit/6d817810daa16667d8e3de5daf82f801bfba3e00.diff
LOG: [clang-doc] serialize IsBuiltIn and IsTemplate for types (#146149)
IsBuiltIn and IsTemplate were being emitted as their default values.
Added:
Modified:
clang-tools-extra/clang-doc/BitcodeReader.cpp
clang-tools-extra/clang-doc/BitcodeWriter.cpp
clang-tools-extra/clang-doc/BitcodeWriter.h
clang-tools-extra/test/clang-doc/json/class-template.cpp
clang-tools-extra/test/clang-doc/json/class.cpp
clang-tools-extra/test/clang-doc/json/function-requires.cpp
clang-tools-extra/test/clang-doc/json/method-template.cpp
clang-tools-extra/test/clang-doc/json/namespace.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp b/clang-tools-extra/clang-doc/BitcodeReader.cpp
index 74da80c382120..fd6f40cff1a4e 100644
--- a/clang-tools-extra/clang-doc/BitcodeReader.cpp
+++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp
@@ -283,7 +283,15 @@ static llvm::Error parseRecord(const Record &R, unsigned ID,
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, TypeInfo *I) {
- return llvm::Error::success();
+ switch (ID) {
+ case TYPE_IS_BUILTIN:
+ return decodeRecord(R, I->IsBuiltIn, Blob);
+ case TYPE_IS_TEMPLATE:
+ return decodeRecord(R, I->IsTemplate, Blob);
+ default:
+ return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "invalid field for TypeInfo");
+ }
}
static llvm::Error parseRecord(const Record &R, unsigned ID,
@@ -293,6 +301,10 @@ static llvm::Error parseRecord(const Record &R, unsigned ID,
return decodeRecord(R, I->Name, Blob);
case FIELD_DEFAULT_VALUE:
return decodeRecord(R, I->DefaultValue, Blob);
+ case FIELD_TYPE_IS_BUILTIN:
+ return decodeRecord(R, I->IsBuiltIn, Blob);
+ case FIELD_TYPE_IS_TEMPLATE:
+ return decodeRecord(R, I->IsTemplate, Blob);
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid field for TypeInfo");
@@ -308,6 +320,10 @@ static llvm::Error parseRecord(const Record &R, unsigned ID,
return decodeRecord(R, I->Access, Blob);
case MEMBER_TYPE_IS_STATIC:
return decodeRecord(R, I->IsStatic, Blob);
+ case MEMBER_TYPE_IS_BUILTIN:
+ return decodeRecord(R, I->IsBuiltIn, Blob);
+ case MEMBER_TYPE_IS_TEMPLATE:
+ return decodeRecord(R, I->IsTemplate, Blob);
default:
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid field for MemberTypeInfo");
diff --git a/clang-tools-extra/clang-doc/BitcodeWriter.cpp b/clang-tools-extra/clang-doc/BitcodeWriter.cpp
index c3351d1decbf5..006ddda1b75e7 100644
--- a/clang-tools-extra/clang-doc/BitcodeWriter.cpp
+++ b/clang-tools-extra/clang-doc/BitcodeWriter.cpp
@@ -161,9 +161,15 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor>
{COMMENT_ARG, {"Arg", &genStringAbbrev}},
{FIELD_TYPE_NAME, {"Name", &genStringAbbrev}},
{FIELD_DEFAULT_VALUE, {"DefaultValue", &genStringAbbrev}},
+ {FIELD_TYPE_IS_BUILTIN, {"IsBuiltin", &genBoolAbbrev}},
+ {FIELD_TYPE_IS_TEMPLATE, {"IsTemplate", &genBoolAbbrev}},
{MEMBER_TYPE_NAME, {"Name", &genStringAbbrev}},
{MEMBER_TYPE_ACCESS, {"Access", &genIntAbbrev}},
{MEMBER_TYPE_IS_STATIC, {"IsStatic", &genBoolAbbrev}},
+ {MEMBER_TYPE_IS_BUILTIN, {"IsBuiltin", &genBoolAbbrev}},
+ {MEMBER_TYPE_IS_TEMPLATE, {"IsTemplate", &genBoolAbbrev}},
+ {TYPE_IS_BUILTIN, {"IsBuiltin", &genBoolAbbrev}},
+ {TYPE_IS_TEMPLATE, {"IsTemplate", &genBoolAbbrev}},
{NAMESPACE_USR, {"USR", &genSymbolIdAbbrev}},
{NAMESPACE_NAME, {"Name", &genStringAbbrev}},
{NAMESPACE_PATH, {"Path", &genStringAbbrev}},
@@ -239,12 +245,15 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>>
COMMENT_PARAMNAME, COMMENT_CLOSENAME, COMMENT_SELFCLOSING,
COMMENT_EXPLICIT, COMMENT_ATTRKEY, COMMENT_ATTRVAL, COMMENT_ARG}},
// Type Block
- {BI_TYPE_BLOCK_ID, {}},
+ {BI_TYPE_BLOCK_ID, {TYPE_IS_BUILTIN, TYPE_IS_TEMPLATE}},
// FieldType Block
- {BI_FIELD_TYPE_BLOCK_ID, {FIELD_TYPE_NAME, FIELD_DEFAULT_VALUE}},
+ {BI_FIELD_TYPE_BLOCK_ID,
+ {FIELD_TYPE_NAME, FIELD_DEFAULT_VALUE, FIELD_TYPE_IS_BUILTIN,
+ FIELD_TYPE_IS_TEMPLATE}},
// MemberType Block
{BI_MEMBER_TYPE_BLOCK_ID,
- {MEMBER_TYPE_NAME, MEMBER_TYPE_ACCESS, MEMBER_TYPE_IS_STATIC}},
+ {MEMBER_TYPE_NAME, MEMBER_TYPE_ACCESS, MEMBER_TYPE_IS_STATIC,
+ MEMBER_TYPE_IS_BUILTIN, MEMBER_TYPE_IS_TEMPLATE}},
// Enum Block
{BI_ENUM_BLOCK_ID,
{ENUM_USR, ENUM_NAME, ENUM_DEFLOCATION, ENUM_LOCATION, ENUM_SCOPED}},
@@ -470,6 +479,8 @@ void ClangDocBitcodeWriter::emitBlock(const Reference &R, FieldId Field) {
void ClangDocBitcodeWriter::emitBlock(const TypeInfo &T) {
StreamSubBlockGuard Block(Stream, BI_TYPE_BLOCK_ID);
emitBlock(T.Type, FieldId::F_type);
+ emitRecord(T.IsBuiltIn, TYPE_IS_BUILTIN);
+ emitRecord(T.IsTemplate, TYPE_IS_TEMPLATE);
}
void ClangDocBitcodeWriter::emitBlock(const TypedefInfo &T) {
@@ -491,6 +502,8 @@ void ClangDocBitcodeWriter::emitBlock(const FieldTypeInfo &T) {
emitBlock(T.Type, FieldId::F_type);
emitRecord(T.Name, FIELD_TYPE_NAME);
emitRecord(T.DefaultValue, FIELD_DEFAULT_VALUE);
+ emitRecord(T.IsBuiltIn, FIELD_TYPE_IS_BUILTIN);
+ emitRecord(T.IsTemplate, FIELD_TYPE_IS_TEMPLATE);
}
void ClangDocBitcodeWriter::emitBlock(const MemberTypeInfo &T) {
@@ -499,6 +512,9 @@ void ClangDocBitcodeWriter::emitBlock(const MemberTypeInfo &T) {
emitRecord(T.Name, MEMBER_TYPE_NAME);
emitRecord(T.Access, MEMBER_TYPE_ACCESS);
emitRecord(T.IsStatic, MEMBER_TYPE_IS_STATIC);
+ emitRecord(T.IsBuiltIn, MEMBER_TYPE_IS_BUILTIN);
+ emitRecord(T.IsTemplate, MEMBER_TYPE_IS_TEMPLATE);
+ emitRecord(T.IsTemplate, MEMBER_TYPE_IS_TEMPLATE);
for (const auto &CI : T.Description)
emitBlock(CI);
}
diff --git a/clang-tools-extra/clang-doc/BitcodeWriter.h b/clang-tools-extra/clang-doc/BitcodeWriter.h
index a70e50b53a61a..f1325094f957a 100644
--- a/clang-tools-extra/clang-doc/BitcodeWriter.h
+++ b/clang-tools-extra/clang-doc/BitcodeWriter.h
@@ -96,11 +96,17 @@ enum RecordId {
COMMENT_ATTRKEY,
COMMENT_ATTRVAL,
COMMENT_ARG,
+ TYPE_IS_BUILTIN,
+ TYPE_IS_TEMPLATE,
FIELD_TYPE_NAME,
FIELD_DEFAULT_VALUE,
+ FIELD_TYPE_IS_BUILTIN,
+ FIELD_TYPE_IS_TEMPLATE,
MEMBER_TYPE_NAME,
MEMBER_TYPE_ACCESS,
MEMBER_TYPE_IS_STATIC,
+ MEMBER_TYPE_IS_BUILTIN,
+ MEMBER_TYPE_IS_TEMPLATE,
NAMESPACE_USR,
NAMESPACE_NAME,
NAMESPACE_PATH,
diff --git a/clang-tools-extra/test/clang-doc/json/class-template.cpp b/clang-tools-extra/test/clang-doc/json/class-template.cpp
index e3ca086d1d9a4..fb9c4c2f21c2e 100644
--- a/clang-tools-extra/test/clang-doc/json/class-template.cpp
+++ b/clang-tools-extra/test/clang-doc/json/class-template.cpp
@@ -17,7 +17,7 @@ template<typename T> struct MyClass {
// CHECK-NEXT: ],
// CHECK-NEXT: "ReturnType": {
// CHECK-NEXT: "IsBuiltIn": false,
-// CHECK-NEXT: "IsTemplate": false,
+// CHECK-NEXT: "IsTemplate": true,
// CHECK-NEXT: "Name": "T",
// CHECK-NEXT: "QualName": "T"
// CHECK-NEXT: "USR": "0000000000000000000000000000000000000000"
diff --git a/clang-tools-extra/test/clang-doc/json/class.cpp b/clang-tools-extra/test/clang-doc/json/class.cpp
index 9ae1f14e2d2a6..bd82b8159e2f9 100644
--- a/clang-tools-extra/test/clang-doc/json/class.cpp
+++ b/clang-tools-extra/test/clang-doc/json/class.cpp
@@ -107,7 +107,7 @@ struct MyClass {
// CHECK-NEXT: "GlobalNamespace"
// CHECK-NEXT: ],
// CHECK-NEXT: "ReturnType": {
-// CHECK-NEXT: "IsBuiltIn": false,
+// CHECK-NEXT: "IsBuiltIn": true,
// CHECK-NEXT: "IsTemplate": false,
// CHECK-NEXT: "Name": "int",
// CHECK-NEXT: "QualName": "int",
@@ -137,7 +137,7 @@ struct MyClass {
// CHECK-NEXT: }
// CHECK-NEXT: ],
// CHECK-NEXT: "ReturnType": {
-// CHECK-NEXT: "IsBuiltIn": false,
+// CHECK-NEXT: "IsBuiltIn": true,
// CHECK-NEXT: "IsTemplate": false,
// CHECK-NEXT: "Name": "int",
// CHECK-NEXT: "QualName": "int",
@@ -184,7 +184,7 @@ struct MyClass {
// CHECK-NEXT: "TypeDeclaration": "",
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}",
// CHECK-NEXT: "Underlying": {
-// CHECK-NEXT: "IsBuiltIn": false,
+// CHECK-NEXT: "IsBuiltIn": true,
// CHECK-NEXT: "IsTemplate": false,
// CHECK-NEXT: "Name": "int",
// CHECK-NEXT: "QualName": "int",
diff --git a/clang-tools-extra/test/clang-doc/json/function-requires.cpp b/clang-tools-extra/test/clang-doc/json/function-requires.cpp
index 99eb2bdb898f3..4e8432e088c4f 100644
--- a/clang-tools-extra/test/clang-doc/json/function-requires.cpp
+++ b/clang-tools-extra/test/clang-doc/json/function-requires.cpp
@@ -23,7 +23,7 @@ template<Incrementable T> Incrementable auto incrementTwo(T t);
// CHECK-NEXT: }
// CHECK-NEXT: ],
// CHECK-NEXT: "ReturnType": {
-// CHECK-NEXT: "IsBuiltIn": false,
+// CHECK-NEXT: "IsBuiltIn": true,
// CHECK-NEXT: "IsTemplate": false,
// CHECK-NEXT: "Name": "void",
// CHECK-NEXT: "QualName": "void",
diff --git a/clang-tools-extra/test/clang-doc/json/method-template.cpp b/clang-tools-extra/test/clang-doc/json/method-template.cpp
index c51a2706d1c22..ea9110d6c2d1c 100644
--- a/clang-tools-extra/test/clang-doc/json/method-template.cpp
+++ b/clang-tools-extra/test/clang-doc/json/method-template.cpp
@@ -27,7 +27,7 @@ struct MyClass {
// CHECK-NEXT: ],
// CHECK-NEXT: "ReturnType": {
// CHECK-NEXT: "IsBuiltIn": false,
-// CHECK-NEXT: "IsTemplate": false,
+// CHECK-NEXT: "IsTemplate": true,
// CHECK-NEXT: "Name": "T",
// CHECK-NEXT: "QualName": "T",
// CHECK-NEXT: "USR": "0000000000000000000000000000000000000000"
diff --git a/clang-tools-extra/test/clang-doc/json/namespace.cpp b/clang-tools-extra/test/clang-doc/json/namespace.cpp
index f1e094f6cab17..6e4fc6938d856 100644
--- a/clang-tools-extra/test/clang-doc/json/namespace.cpp
+++ b/clang-tools-extra/test/clang-doc/json/namespace.cpp
@@ -56,7 +56,7 @@ typedef int MyTypedef;
// CHECK-NEXT: }
// CHECK-NEXT: ],
// CHECK-NEXT: "ReturnType": {
-// CHECK-NEXT: "IsBuiltIn": false,
+// CHECK-NEXT: "IsBuiltIn": true,
// CHECK-NEXT: "IsTemplate": false,
// CHECK-NEXT: "Name": "void",
// CHECK-NEXT: "QualName": "void",
@@ -93,7 +93,7 @@ typedef int MyTypedef;
// CHECK-NEXT: "TypeDeclaration": "",
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}",
// CHECK-NEXT: "Underlying": {
-// CHECK-NEXT: "IsBuiltIn": false,
+// CHECK-NEXT: "IsBuiltIn": true,
// CHECK-NEXT: "IsTemplate": false,
// CHECK-NEXT: "Name": "int",
// CHECK-NEXT: "QualName": "int",
@@ -111,8 +111,7 @@ typedef int MyTypedef;
// CHECK-NEXT: },
// CHECK-NEXT: "Name": "Global",
// CHECK-NEXT: "Type": {
-// COM: FIXME: IsBuiltIn emits as its default value
-// CHECK-NEXT: "IsBuiltIn": false,
+// CHECK-NEXT: "IsBuiltIn": true,
// CHECK-NEXT: "IsTemplate": false,
// CHECK-NEXT: "Name": "int",
// CHECK-NEXT: "QualName": "int",
More information about the cfe-commits
mailing list