Skip to content

Commit f9f8cfb

Browse files
committed
ModuleInterface: Use SemanticAvailableAttr.
1 parent dcfe563 commit f9f8cfb

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

include/swift/AST/Attr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3221,7 +3221,7 @@ class ParsedDeclAttributes {
32213221
/// informaton, like its corresponding `AvailabilityDomain`.
32223222
class SemanticAvailableAttr final {
32233223
const AvailableAttr *attr;
3224-
const AvailabilityDomain domain;
3224+
AvailabilityDomain domain;
32253225

32263226
public:
32273227
SemanticAvailableAttr(const AvailableAttr *attr, AvailabilityDomain domain)

lib/Frontend/ModuleInterfaceSupport.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ namespace {
427427
class InheritedProtocolCollector {
428428
static const StringLiteral DummyProtocolName;
429429

430-
using AvailableAttrList = TinyPtrVector<const AvailableAttr *>;
430+
using AvailableAttrList = SmallVector<SemanticAvailableAttr>;
431431
using OriginallyDefinedInAttrList =
432432
TinyPtrVector<const OriginallyDefinedInAttr *>;
433433
using ProtocolAndAvailability =
@@ -451,14 +451,13 @@ class InheritedProtocolCollector {
451451

452452
cache.emplace();
453453
while (D) {
454-
for (auto semanticAttr : D->getSemanticAvailableAttrs()) {
455-
auto nextAttr = semanticAttr.getParsedAttr();
456-
454+
for (auto nextAttr : D->getSemanticAvailableAttrs()) {
457455
// FIXME: This is just approximating the effects of nested availability
458456
// attributes for the same platform; formally they'd need to be merged.
459-
bool alreadyHasMoreSpecificAttrForThisPlatform =
460-
llvm::any_of(*cache, [nextAttr](const AvailableAttr *existingAttr) {
461-
return existingAttr->getPlatform() == nextAttr->getPlatform();
457+
// FIXME: [availability] This should compare availability domains.
458+
bool alreadyHasMoreSpecificAttrForThisPlatform = llvm::any_of(
459+
*cache, [nextAttr](SemanticAvailableAttr existingAttr) {
460+
return existingAttr.getPlatform() == nextAttr.getPlatform();
462461
});
463462
if (alreadyHasMoreSpecificAttrForThisPlatform)
464463
continue;
@@ -785,8 +784,9 @@ class InheritedProtocolCollector {
785784

786785
// Build up synthesized DeclAttributes for the extension.
787786
TinyPtrVector<const DeclAttribute *> clonedAttrs;
788-
for (auto *attr : availability) {
789-
clonedAttrs.push_back(attr->clone(ctx, /*implicit*/ true));
787+
for (auto attr : availability) {
788+
clonedAttrs.push_back(
789+
attr.getParsedAttr()->clone(ctx, /*implicit*/ true));
790790
}
791791
for (auto *attr : proto->getAttrs().getAttributes<SPIAccessControlAttr>()) {
792792
clonedAttrs.push_back(attr->clone(ctx, /*implicit*/ true));

0 commit comments

Comments
 (0)