Skip to content

Commit 05c1447

Browse files
[clang][ExtractAPI] Serialize platform specific unavailable attribute in symbol graphs (#89277)
rdar://125622225
1 parent 6548465 commit 05c1447

File tree

2 files changed

+107
-450
lines changed

2 files changed

+107
-450
lines changed

clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -164,27 +164,29 @@ std::optional<Array> serializeAvailability(const AvailabilityInfo &Avail) {
164164
if (Avail.isDefault())
165165
return std::nullopt;
166166

167-
Object Availability;
168167
Array AvailabilityArray;
169-
Availability["domain"] = Avail.Domain;
170-
serializeObject(Availability, "introduced",
171-
serializeSemanticVersion(Avail.Introduced));
172-
serializeObject(Availability, "deprecated",
173-
serializeSemanticVersion(Avail.Deprecated));
174-
serializeObject(Availability, "obsoleted",
175-
serializeSemanticVersion(Avail.Obsoleted));
168+
176169
if (Avail.isUnconditionallyDeprecated()) {
177170
Object UnconditionallyDeprecated;
178171
UnconditionallyDeprecated["domain"] = "*";
179172
UnconditionallyDeprecated["isUnconditionallyDeprecated"] = true;
180173
AvailabilityArray.emplace_back(std::move(UnconditionallyDeprecated));
181174
}
182-
if (Avail.isUnconditionallyUnavailable()) {
183-
Object UnconditionallyUnavailable;
184-
UnconditionallyUnavailable["domain"] = "*";
185-
UnconditionallyUnavailable["isUnconditionallyUnavailable"] = true;
186-
AvailabilityArray.emplace_back(std::move(UnconditionallyUnavailable));
175+
Object Availability;
176+
177+
Availability["domain"] = Avail.Domain;
178+
179+
if (Avail.isUnavailable()) {
180+
Availability["isUnconditionallyUnavailable"] = true;
181+
} else {
182+
serializeObject(Availability, "introduced",
183+
serializeSemanticVersion(Avail.Introduced));
184+
serializeObject(Availability, "deprecated",
185+
serializeSemanticVersion(Avail.Deprecated));
186+
serializeObject(Availability, "obsoleted",
187+
serializeSemanticVersion(Avail.Obsoleted));
187188
}
189+
188190
AvailabilityArray.emplace_back(std::move(Availability));
189191
return AvailabilityArray;
190192
}

0 commit comments

Comments
 (0)