@@ -55,6 +55,7 @@ class Decl;
5555class AbstractFunctionDecl ;
5656class FuncDecl ;
5757class ClassDecl ;
58+ class AccessorDecl ;
5859class GenericFunctionType ;
5960class LazyConformanceLoader ;
6061class LazyMemberLoader ;
@@ -1548,6 +1549,68 @@ class SpecializeAttr final
15481549 }
15491550};
15501551
1552+ class InitializesAttr final
1553+ : public DeclAttribute,
1554+ private llvm::TrailingObjects<InitializesAttr, Identifier> {
1555+ friend TrailingObjects;
1556+
1557+ size_t numProperties;
1558+
1559+ InitializesAttr (SourceLoc atLoc, SourceRange range,
1560+ ArrayRef<Identifier> properties);
1561+
1562+ public:
1563+ static InitializesAttr *create (ASTContext &ctx,
1564+ SourceLoc atLoc, SourceRange range,
1565+ ArrayRef<Identifier> properties);
1566+
1567+ size_t numTrailingObjects (OverloadToken<Identifier>) const {
1568+ return numProperties;
1569+ }
1570+
1571+ unsigned getNumProperties () const { return numProperties; }
1572+
1573+ ArrayRef<Identifier> getProperties () const {
1574+ return {getTrailingObjects<Identifier>(), numProperties};
1575+ }
1576+
1577+ ArrayRef<VarDecl *> getPropertyDecls (AccessorDecl *attachedTo) const ;
1578+
1579+ static bool classof (const DeclAttribute *DA) {
1580+ return DA->getKind () == DAK_Initializes;
1581+ }
1582+ };
1583+
1584+ class AccessesAttr final
1585+ : public DeclAttribute,
1586+ private llvm::TrailingObjects<AccessesAttr, Identifier> {
1587+ friend TrailingObjects;
1588+
1589+ size_t numProperties;
1590+
1591+ AccessesAttr (SourceLoc atLoc, SourceRange range,
1592+ ArrayRef<Identifier> properties);
1593+
1594+ public:
1595+ static AccessesAttr *create (ASTContext &ctx,
1596+ SourceLoc atLoc, SourceRange range,
1597+ ArrayRef<Identifier> properties);
1598+
1599+ size_t numTrailingObjects (OverloadToken<Identifier>) const {
1600+ return numProperties;
1601+ }
1602+
1603+ ArrayRef<Identifier> getProperties () const {
1604+ return {getTrailingObjects<Identifier>(), numProperties};
1605+ }
1606+
1607+ ArrayRef<VarDecl *> getPropertyDecls (AccessorDecl *attachedTo) const ;
1608+
1609+ static bool classof (const DeclAttribute *DA) {
1610+ return DA->getKind () == DAK_Accesses;
1611+ }
1612+ };
1613+
15511614// / The @_implements attribute, which treats a decl as the implementation for
15521615// / some named protocol requirement (but otherwise not-visible by that name).
15531616class ImplementsAttr : public DeclAttribute {
0 commit comments