[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
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user