diff options
author | Daniel Grumberg <dgrumberg@apple.com> | 2022-03-29 17:48:11 +0100 |
---|---|---|
committer | Daniel Grumberg <dgrumberg@apple.com> | 2022-03-30 18:33:10 +0100 |
commit | 529a0570f7e8c5144bd3ad057e43f00e3af58d1b (patch) | |
tree | 113bbcd01f2df35cd3e16fdac2f0ae187efad3aa /clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp | |
parent | a9909d23e9bb8c4649cba1c14d479c28df4ca185 (diff) | |
download | llvm-529a0570f7e8c5144bd3ad057e43f00e3af58d1b.zip llvm-529a0570f7e8c5144bd3ad057e43f00e3af58d1b.tar.gz llvm-529a0570f7e8c5144bd3ad057e43f00e3af58d1b.tar.bz2 |
[clang][extract-api] Add support for macros
To achieve this we hook into the preprocessor during the
ExtractAPIAction and record definitions for macros that don't get
undefined during preprocessing.
Diffstat (limited to 'clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp')
-rw-r--r-- | clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp index 1acb67a..bfd2c20 100644 --- a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp +++ b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp @@ -397,6 +397,9 @@ Object serializeSymbolKind(const APIRecord &Record, Language Lang) { Kind["identifier"] = AddLangPrefix("protocol"); Kind["displayName"] = "Protocol"; break; + case APIRecord::RK_MacroDefinition: + Kind["identifier"] = AddLangPrefix("macro"); + Kind["displayName"] = "Macro"; } return Kind; @@ -576,6 +579,15 @@ void SymbolGraphSerializer::serializeObjCContainerRecord( ObjCInterface->SuperClass); } +void SymbolGraphSerializer::serializeMacroDefinitionRecord( + const MacroDefinitionRecord &Record) { + auto Macro = serializeAPIRecord(Record); + if (!Macro) + return; + + Symbols.emplace_back(std::move(*Macro)); +} + Object SymbolGraphSerializer::serialize() { Object Root; serializeObject(Root, "metadata", serializeMetadata()); @@ -601,6 +613,9 @@ Object SymbolGraphSerializer::serialize() { for (const auto &ObjCProtocol : API.getObjCProtocols()) serializeObjCContainerRecord(*ObjCProtocol.second); + for (const auto &Macro : API.getMacros()) + serializeMacroDefinitionRecord(*Macro.second); + Root["symbols"] = std::move(Symbols); Root["relationhips"] = std::move(Relationships); |