aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
diff options
context:
space:
mode:
authorDaniel Grumberg <dgrumberg@apple.com>2024-01-22 15:32:57 +0000
committerGitHub <noreply@github.com>2024-01-22 15:32:57 +0000
commit69fedaf830f8a2df4751a3c20189b7299daf88ae (patch)
treede67602b2a11d8d137c43fc05a53f24e963ba6a6 /clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
parent726d940586d7018ef03e87cb86601f4885f66001 (diff)
downloadllvm-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.cpp18
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));