Skip to content

Commit 769c2e7

Browse files
committed
Add a utility to clone an @available attribute.
1 parent 7be0429 commit 769c2e7

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

include/swift/AST/Attr.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,8 @@ class AvailableAttr : public DeclAttribute {
743743
llvm::VersionTuple Obsoleted
744744
= llvm::VersionTuple());
745745

746+
AvailableAttr *clone(ASTContext &C, bool implicit) const;
747+
746748
static bool classof(const DeclAttribute *DA) {
747749
return DA->getKind() == DAK_Available;
748750
}

lib/AST/Attr.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1480,6 +1480,20 @@ bool AvailableAttr::isActivePlatform(const ASTContext &ctx) const {
14801480
return isPlatformActive(Platform, ctx.LangOpts);
14811481
}
14821482

1483+
AvailableAttr *AvailableAttr::clone(ASTContext &C, bool implicit) const {
1484+
return new (C) AvailableAttr(implicit ? SourceLoc() : AtLoc,
1485+
implicit ? SourceRange() : getRange(),
1486+
Platform, Message, Rename,
1487+
Introduced ? *Introduced : llvm::VersionTuple(),
1488+
implicit ? SourceRange() : IntroducedRange,
1489+
Deprecated ? *Deprecated : llvm::VersionTuple(),
1490+
implicit ? SourceRange() : DeprecatedRange,
1491+
Obsoleted ? *Obsoleted : llvm::VersionTuple(),
1492+
implicit ? SourceRange() : ObsoletedRange,
1493+
PlatformAgnostic,
1494+
implicit);
1495+
}
1496+
14831497
Optional<OriginallyDefinedInAttr::ActiveVersion>
14841498
OriginallyDefinedInAttr::isActivePlatform(const ASTContext &ctx) const {
14851499
OriginallyDefinedInAttr::ActiveVersion Result;

0 commit comments

Comments
 (0)