diff options
author | Daniel Grumberg <dgrumberg@apple.com> | 2024-04-23 09:00:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-23 09:00:08 +0100 |
commit | 05c1447b3eabe9cc4a27866094e46c57350c5d5a (patch) | |
tree | 910f92c69a967f98d2e40e3e0d977125206fce49 /clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp | |
parent | 654846560c8892b32ea1e92c1fffc5e70bf0e75f (diff) | |
download | llvm-05c1447b3eabe9cc4a27866094e46c57350c5d5a.zip llvm-05c1447b3eabe9cc4a27866094e46c57350c5d5a.tar.gz llvm-05c1447b3eabe9cc4a27866094e46c57350c5d5a.tar.bz2 |
[clang][ExtractAPI] Serialize platform specific unavailable attribute in symbol graphs (#89277)
rdar://125622225
Diffstat (limited to 'clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp')
-rw-r--r-- | clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp index 57f966c..8b1dcb4 100644 --- a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp +++ b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp @@ -164,27 +164,29 @@ std::optional<Array> serializeAvailability(const AvailabilityInfo &Avail) { if (Avail.isDefault()) return std::nullopt; - Object Availability; Array AvailabilityArray; - Availability["domain"] = Avail.Domain; - serializeObject(Availability, "introduced", - serializeSemanticVersion(Avail.Introduced)); - serializeObject(Availability, "deprecated", - serializeSemanticVersion(Avail.Deprecated)); - serializeObject(Availability, "obsoleted", - serializeSemanticVersion(Avail.Obsoleted)); + if (Avail.isUnconditionallyDeprecated()) { Object UnconditionallyDeprecated; UnconditionallyDeprecated["domain"] = "*"; UnconditionallyDeprecated["isUnconditionallyDeprecated"] = true; AvailabilityArray.emplace_back(std::move(UnconditionallyDeprecated)); } - if (Avail.isUnconditionallyUnavailable()) { - Object UnconditionallyUnavailable; - UnconditionallyUnavailable["domain"] = "*"; - UnconditionallyUnavailable["isUnconditionallyUnavailable"] = true; - AvailabilityArray.emplace_back(std::move(UnconditionallyUnavailable)); + Object Availability; + + Availability["domain"] = Avail.Domain; + + if (Avail.isUnavailable()) { + Availability["isUnconditionallyUnavailable"] = true; + } else { + serializeObject(Availability, "introduced", + serializeSemanticVersion(Avail.Introduced)); + serializeObject(Availability, "deprecated", + serializeSemanticVersion(Avail.Deprecated)); + serializeObject(Availability, "obsoleted", + serializeSemanticVersion(Avail.Obsoleted)); } + AvailabilityArray.emplace_back(std::move(Availability)); return AvailabilityArray; } |