[clang][ExtractAPI] Add support for C++ global function templates

Add records, serialization for global function templates and their specializations

Depends on D157350

Reviewed By: dang

Differential Revision: https://reviews.llvm.org/D157579
This commit is contained in:
Erick Velez
2023-08-18 14:33:51 -07:00
parent 3e569883fa
commit 80b787e803
10 changed files with 920 additions and 22 deletions

View File

@@ -361,6 +361,14 @@ Object serializeSymbolKind(APIRecord::RecordKind RK, Language Lang) {
Kind["identifier"] = AddLangPrefix("func");
Kind["displayName"] = "Function";
break;
case APIRecord::RK_GlobalFunctionTemplate:
Kind["identifier"] = AddLangPrefix("func");
Kind["displayName"] = "Function Template";
break;
case APIRecord::RK_GlobalFunctionTemplateSpecialization:
Kind["identifier"] = AddLangPrefix("func");
Kind["displayName"] = "Function Template Specialization";
break;
case APIRecord::RK_GlobalVariableTemplate:
Kind["identifier"] = AddLangPrefix("var");
Kind["displayName"] = "Global Variable Template";
@@ -947,6 +955,22 @@ void SymbolGraphSerializer::
Symbols.emplace_back(std::move(*GlobalVariableTemplatePartialSpecialization));
}
void SymbolGraphSerializer::visitGlobalFunctionTemplateRecord(
const GlobalFunctionTemplateRecord &Record) {
auto GlobalFunctionTemplate = serializeAPIRecord(Record);
if (!GlobalFunctionTemplate)
return;
Symbols.emplace_back(std::move(*GlobalFunctionTemplate));
}
void SymbolGraphSerializer::visitGlobalFunctionTemplateSpecializationRecord(
const GlobalFunctionTemplateSpecializationRecord &Record) {
auto GlobalFunctionTemplateSpecialization = serializeAPIRecord(Record);
if (!GlobalFunctionTemplateSpecialization)
return;
Symbols.emplace_back(std::move(*GlobalFunctionTemplateSpecialization));
}
void SymbolGraphSerializer::visitObjCContainerRecord(
const ObjCContainerRecord &Record) {
auto ObjCContainer = serializeAPIRecord(Record);