aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
diff options
context:
space:
mode:
authorDaniel Grumberg <dgrumberg@apple.com>2024-08-15 14:19:49 +0100
committerGitHub <noreply@github.com>2024-08-15 14:19:49 +0100
commit026d963cb004689477d2b5798cbba5ad41c25a70 (patch)
treed8cfd9011fee03a1cf4138313c009f5ddc826070 /clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
parenta4525fcc8f127139a493164c360725ae4c6c87b3 (diff)
downloadllvm-026d963cb004689477d2b5798cbba5ad41c25a70.zip
llvm-026d963cb004689477d2b5798cbba5ad41c25a70.tar.gz
llvm-026d963cb004689477d2b5798cbba5ad41c25a70.tar.bz2
[clang][ExtractAPI] Compute inherited availability information (#103040)
Additionally this computes availability information for all platforms ahead of possibly introducing a flag to enable this behavior. rdar://123513706
Diffstat (limited to 'clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp')
-rw-r--r--clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
index 6e56ee5..84ed546 100644
--- a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
+++ b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
@@ -171,22 +171,25 @@ std::optional<Array> serializeAvailability(const AvailabilityInfo &Avail) {
UnconditionallyDeprecated["isUnconditionallyDeprecated"] = true;
AvailabilityArray.emplace_back(std::move(UnconditionallyDeprecated));
}
- 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));
+
+ if (Avail.Domain.str() != "") {
+ 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));
}
- AvailabilityArray.emplace_back(std::move(Availability));
return AvailabilityArray;
}