diff options
author | Erick Velez <erickvelez7@gmail.com> | 2023-08-21 09:06:53 -0700 |
---|---|---|
committer | Erick Velez <erickvelez7@gmail.com> | 2023-08-21 10:17:58 -0700 |
commit | 634b2fd2cac251e2d645dadc6b00a2b2b80a08d0 (patch) | |
tree | 3d618b3dadb0456417efd8871b53028e4471adb2 /clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp | |
parent | 0303137bfcf2e28fb2d9387b67f91b00ca6b42f5 (diff) | |
download | llvm-634b2fd2cac251e2d645dadc6b00a2b2b80a08d0.zip llvm-634b2fd2cac251e2d645dadc6b00a2b2b80a08d0.tar.gz llvm-634b2fd2cac251e2d645dadc6b00a2b2b80a08d0.tar.bz2 |
[clang][ExtractAPI] Add support for C++ member templates
Visit and serialize C++ fields by checking if a var template's context is a CXXRecordDecl in VisitVarTemplateDecl.
Depends on D158027
Reviewed By: dang
Differential Revision: https://reviews.llvm.org/D158029
Diffstat (limited to 'clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp')
-rw-r--r-- | clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp index 8a65679..6782483 100644 --- a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp +++ b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp @@ -428,6 +428,10 @@ Object serializeSymbolKind(APIRecord::RecordKind RK, Language Lang) { Kind["identifier"] = AddLangPrefix("method"); Kind["displayName"] = "Method Template Specialization"; break; + case APIRecord::RK_CXXFieldTemplate: + Kind["identifier"] = AddLangPrefix("property"); + Kind["displayName"] = "Template Property"; + break; case APIRecord::RK_Concept: Kind["identifier"] = AddLangPrefix("concept"); Kind["displayName"] = "Concept"; @@ -956,6 +960,19 @@ void SymbolGraphSerializer::visitMethodTemplateSpecializationRecord( Record.ParentInformation.ParentRecord); } +void SymbolGraphSerializer::visitCXXFieldTemplateRecord( + const CXXFieldTemplateRecord &Record) { + if (!ShouldRecurse) + // Ignore child symbols + return; + auto CXXFieldTemplate = serializeAPIRecord(Record); + if (!CXXFieldTemplate) + return; + Symbols.emplace_back(std::move(*CXXFieldTemplate)); + serializeRelationship(RelationshipKind::MemberOf, Record, + Record.ParentInformation.ParentRecord); +} + void SymbolGraphSerializer::visitConceptRecord(const ConceptRecord &Record) { auto Concept = serializeAPIRecord(Record); if (!Concept) |