@@ -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 ;
@@ -1530,6 +1531,68 @@ class SpecializeAttr final
1530
1531
}
1531
1532
};
1532
1533
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
+
1533
1596
// / The @_implements attribute, which treats a decl as the implementation for
1534
1597
// / some named protocol requirement (but otherwise not-visible by that name).
1535
1598
class ImplementsAttr : public DeclAttribute {
0 commit comments