@@ -55,6 +55,7 @@ class Decl;
5555class AbstractFunctionDecl ;
5656class FuncDecl ;
5757class ClassDecl ;
58+ class AccessorDecl ;
5859class GenericFunctionType ;
5960class LazyConformanceLoader ;
6061class LazyMemberLoader ;
@@ -1530,6 +1531,68 @@ class SpecializeAttr final
15301531 }
15311532};
15321533
1534+ class InitializesAttr final
1535+ : public DeclAttribute,
1536+ private llvm::TrailingObjects<InitializesAttr, Identifier> {
1537+ friend TrailingObjects;
1538+
1539+ size_t numProperties;
1540+
1541+ InitializesAttr (SourceLoc atLoc, SourceRange range,
1542+ ArrayRef<Identifier> properties);
1543+
1544+ public:
1545+ static InitializesAttr *create (ASTContext &ctx,
1546+ SourceLoc atLoc, SourceRange range,
1547+ ArrayRef<Identifier> properties);
1548+
1549+ size_t numTrailingObjects (OverloadToken<Identifier>) const {
1550+ return numProperties;
1551+ }
1552+
1553+ unsigned getNumProperties () const { return numProperties; }
1554+
1555+ ArrayRef<Identifier> getProperties () const {
1556+ return {getTrailingObjects<Identifier>(), numProperties};
1557+ }
1558+
1559+ ArrayRef<VarDecl *> getPropertyDecls (AccessorDecl *attachedTo) const ;
1560+
1561+ static bool classof (const DeclAttribute *DA) {
1562+ return DA->getKind () == DAK_Initializes;
1563+ }
1564+ };
1565+
1566+ class AccessesAttr final
1567+ : public DeclAttribute,
1568+ private llvm::TrailingObjects<AccessesAttr, Identifier> {
1569+ friend TrailingObjects;
1570+
1571+ size_t numProperties;
1572+
1573+ AccessesAttr (SourceLoc atLoc, SourceRange range,
1574+ ArrayRef<Identifier> properties);
1575+
1576+ public:
1577+ static AccessesAttr *create (ASTContext &ctx,
1578+ SourceLoc atLoc, SourceRange range,
1579+ ArrayRef<Identifier> properties);
1580+
1581+ size_t numTrailingObjects (OverloadToken<Identifier>) const {
1582+ return numProperties;
1583+ }
1584+
1585+ ArrayRef<Identifier> getProperties () const {
1586+ return {getTrailingObjects<Identifier>(), numProperties};
1587+ }
1588+
1589+ ArrayRef<VarDecl *> getPropertyDecls (AccessorDecl *attachedTo) const ;
1590+
1591+ static bool classof (const DeclAttribute *DA) {
1592+ return DA->getKind () == DAK_Accesses;
1593+ }
1594+ };
1595+
15331596// / The @_implements attribute, which treats a decl as the implementation for
15341597// / some named protocol requirement (but otherwise not-visible by that name).
15351598class ImplementsAttr : public DeclAttribute {
0 commit comments