aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
diff options
context:
space:
mode:
authorAnkur <arsenic.secondary@gmail.com>2023-03-02 14:33:56 +0000
committerDaniel Grumberg <dgrumberg@apple.com>2023-03-02 15:49:46 +0000
commit65f7a84cf38b9839de0f29877d5ba4895848ea73 (patch)
tree4f9c144c7ce1c95f2b21af750acc935fcf826d71 /clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
parent3230a64936d28d1114e9493e620ebbd65f595e07 (diff)
downloadllvm-65f7a84cf38b9839de0f29877d5ba4895848ea73.zip
llvm-65f7a84cf38b9839de0f29877d5ba4895848ea73.tar.gz
llvm-65f7a84cf38b9839de0f29877d5ba4895848ea73.tar.bz2
[clang][ExtractAPI] Handle platform specific unavailability correctly
This Patch gives ExtractAPI the ability to emit correct availability information for symbols marked as unavailable on a specific platform ( PR#60954 ) Reviewed By: dang Differential Revision: https://reviews.llvm.org/D144940
Diffstat (limited to 'clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp')
-rw-r--r--clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
index 8beb016..8a98f5c 100644
--- a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
+++ b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
@@ -171,12 +171,16 @@ serializeAvailability(const AvailabilitySet &Availabilities) {
for (const auto &AvailInfo : Availabilities) {
Object Availability;
Availability["domain"] = AvailInfo.Domain;
- serializeObject(Availability, "introducedVersion",
- serializeSemanticVersion(AvailInfo.Introduced));
- serializeObject(Availability, "deprecatedVersion",
- serializeSemanticVersion(AvailInfo.Deprecated));
- serializeObject(Availability, "obsoletedVersion",
- serializeSemanticVersion(AvailInfo.Obsoleted));
+ if (AvailInfo.Unavailable)
+ Availability["isUnconditionallyUnavailable"] = true;
+ else {
+ serializeObject(Availability, "introducedVersion",
+ serializeSemanticVersion(AvailInfo.Introduced));
+ serializeObject(Availability, "deprecatedVersion",
+ serializeSemanticVersion(AvailInfo.Deprecated));
+ serializeObject(Availability, "obsoletedVersion",
+ serializeSemanticVersion(AvailInfo.Obsoleted));
+ }
AvailabilityArray.emplace_back(std::move(Availability));
}