@@ -55,6 +55,7 @@ class Decl;
55
55
class AbstractFunctionDecl ;
56
56
class FuncDecl ;
57
57
class ClassDecl ;
58
+ class AccessorDecl ;
58
59
class GenericFunctionType ;
59
60
class LazyConformanceLoader ;
60
61
class LazyMemberLoader ;
@@ -1548,6 +1549,68 @@ class SpecializeAttr final
1548
1549
}
1549
1550
};
1550
1551
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
+
1551
1614
// / The @_implements attribute, which treats a decl as the implementation for
1552
1615
// / some named protocol requirement (but otherwise not-visible by that name).
1553
1616
class ImplementsAttr : public DeclAttribute {
0 commit comments