diff options
author | Daniel Grumberg <dgrumberg@apple.com> | 2024-01-22 15:32:57 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-22 15:32:57 +0000 |
commit | 69fedaf830f8a2df4751a3c20189b7299daf88ae (patch) | |
tree | de67602b2a11d8d137c43fc05a53f24e963ba6a6 /clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp | |
parent | 726d940586d7018ef03e87cb86601f4885f66001 (diff) | |
download | llvm-69fedaf830f8a2df4751a3c20189b7299daf88ae.zip llvm-69fedaf830f8a2df4751a3c20189b7299daf88ae.tar.gz llvm-69fedaf830f8a2df4751a3c20189b7299daf88ae.tar.bz2 |
[clang][ExtractAPI] Add support C unions in non C++ parsing mode (#77451)
Ensure that we generate correct symbol kinds and declaration fragments
for unions in C and Objective-C parsing modes.
rdar://120544091
Diffstat (limited to 'clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp')
-rw-r--r-- | clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp index ee424a1..349b93e 100644 --- a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp +++ b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp @@ -400,7 +400,7 @@ Object serializeSymbolKind(APIRecord::RecordKind RK, Language Lang) { Kind["identifier"] = AddLangPrefix("struct"); Kind["displayName"] = "Structure"; break; - case APIRecord::RK_CXXField: + case APIRecord::RK_UnionField: Kind["identifier"] = AddLangPrefix("property"); Kind["displayName"] = "Instance Property"; break; @@ -408,6 +408,10 @@ Object serializeSymbolKind(APIRecord::RecordKind RK, Language Lang) { Kind["identifier"] = AddLangPrefix("union"); Kind["displayName"] = "Union"; break; + case APIRecord::RK_CXXField: + Kind["identifier"] = AddLangPrefix("property"); + Kind["displayName"] = "Instance Property"; + break; case APIRecord::RK_StaticField: Kind["identifier"] = AddLangPrefix("type.property"); Kind["displayName"] = "Type Property"; @@ -871,12 +875,12 @@ void SymbolGraphSerializer::visitEnumRecord(const EnumRecord &Record) { serializeMembers(Record, Record.Constants); } -void SymbolGraphSerializer::visitStructRecord(const StructRecord &Record) { - auto Struct = serializeAPIRecord(Record); - if (!Struct) +void SymbolGraphSerializer::visitRecordRecord(const RecordRecord &Record) { + auto SerializedRecord = serializeAPIRecord(Record); + if (!SerializedRecord) return; - Symbols.emplace_back(std::move(*Struct)); + Symbols.emplace_back(std::move(*SerializedRecord)); serializeMembers(Record, Record.Fields); } @@ -1167,7 +1171,9 @@ void SymbolGraphSerializer::serializeSingleRecord(const APIRecord *Record) { visitEnumRecord(*cast<EnumRecord>(Record)); break; case APIRecord::RK_Struct: - visitStructRecord(*cast<StructRecord>(Record)); + LLVM_FALLTHROUGH; + case APIRecord::RK_Union: + visitRecordRecord(*cast<RecordRecord>(Record)); break; case APIRecord::RK_StaticField: visitStaticFieldRecord(*cast<StaticFieldRecord>(Record)); |