Skip to content

Commit bd41bb7

Browse files
authored
Merge pull request #19741 from nkcsgexi/property-observer-module-digester
2 parents b9d0a49 + 9cfc0de commit bd41bb7

File tree

5 files changed

+24
-4
lines changed

5 files changed

+24
-4
lines changed

include/swift/IDE/DigesterEnums.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ KEY_BOOL(IsLet, isLet)
129129
KEY_BOOL(IsOpen, isOpen)
130130
KEY_BOOL(IsInternal, isInternal)
131131
KEY_BOOL(HasStorage, hasStorage)
132+
KEY_BOOL(HasDidset, hasDidset)
133+
KEY_BOOL(HasWillset, hasWillset)
132134

133135
KEY(kind)
134136

test/api-digester/Inputs/cake.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public extension Int {
4747
@_fixed_layout
4848
public struct fixedLayoutStruct {
4949
public var a = 1
50-
private var b = 2
50+
private var b = 2 { didSet {} willSet(value) {} }
5151
var c = 3
5252
@available(*, unavailable)
5353
public let unavailableProperty = 1

test/api-digester/Outputs/cake-abi.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,9 @@
803803
"HasInitialValue"
804804
],
805805
"fixedbinaryorder": 1,
806-
"hasStorage": true
806+
"hasStorage": true,
807+
"hasDidset": true,
808+
"hasWillset": true
807809
},
808810
{
809811
"kind": "Var",

tools/swift-api-digester/ModuleAnalyzerNodes.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ SDKNodeDeclTypeAlias::SDKNodeDeclTypeAlias(SDKNodeInitInfo Info):
112112
SDKNodeDeclVar::SDKNodeDeclVar(SDKNodeInitInfo Info):
113113
SDKNodeDecl(Info, SDKNodeKind::DeclVar),
114114
FixedBinaryOrder(Info.FixedBinaryOrder), IsLet(Info.IsLet),
115-
HasStorage(Info.HasStorage) {}
115+
HasStorage(Info.HasStorage), HasDidSet(Info.HasDidset),
116+
HasWillSet(Info.HasWillset) {}
116117

117118
SDKNodeDeclAbstractFunc::SDKNodeDeclAbstractFunc(SDKNodeInitInfo Info,
118119
SDKNodeKind Kind): SDKNodeDecl(Info, Kind), IsThrowing(Info.IsThrowing),
@@ -136,7 +137,8 @@ SDKNodeDeclAssociatedType::SDKNodeDeclAssociatedType(SDKNodeInitInfo Info):
136137

137138
SDKNodeDeclSubscript::SDKNodeDeclSubscript(SDKNodeInitInfo Info):
138139
SDKNodeDeclAbstractFunc(Info, SDKNodeKind::DeclSubscript),
139-
HasSetter(Info.HasSetter), HasStorage(Info.HasStorage) {}
140+
HasSetter(Info.HasSetter), HasStorage(Info.HasStorage),
141+
HasDidSet(Info.HasDidset), HasWillSet(Info.HasWillset) {}
140142

141143
StringRef SDKNodeDecl::getHeaderName() const {
142144
if (Location.empty())
@@ -1111,6 +1113,8 @@ SDKNodeInitInfo::SDKNodeInitInfo(SDKContext &Ctx, ValueDecl *VD)
11111113

11121114
if (auto *VAR = dyn_cast<AbstractStorageDecl>(VD)) {
11131115
HasStorage = VAR->hasStorage();
1116+
HasDidset = VAR->getDidSetFunc();
1117+
HasWillset = VAR->getWillSetFunc();
11141118
}
11151119
}
11161120

@@ -1541,13 +1545,17 @@ void SDKNodeDeclSubscript::jsonize(json::Output &out) {
15411545
SDKNodeDeclAbstractFunc::jsonize(out);
15421546
output(out, KeyKind::KK_hasSetter, HasSetter);
15431547
output(out, KeyKind::KK_hasStorage, HasStorage);
1548+
output(out, KeyKind::KK_hasDidset, HasDidSet);
1549+
output(out, KeyKind::KK_hasWillset, HasWillSet);
15441550
}
15451551

15461552
void SDKNodeDeclVar::jsonize(json::Output &out) {
15471553
SDKNodeDecl::jsonize(out);
15481554
out.mapOptional(getKeyContent(Ctx, KeyKind::KK_fixedbinaryorder).data(), FixedBinaryOrder);
15491555
output(out, KeyKind::KK_isLet, IsLet);
15501556
output(out, KeyKind::KK_hasStorage, HasStorage);
1557+
output(out, KeyKind::KK_hasDidset, HasDidSet);
1558+
output(out, KeyKind::KK_hasWillset, HasWillSet);
15511559
}
15521560

15531561
namespace swift {

tools/swift-api-digester/ModuleAnalyzerNodes.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,8 @@ class SDKNodeDeclVar : public SDKNodeDecl {
497497
Optional<uint8_t> FixedBinaryOrder;
498498
bool IsLet;
499499
bool HasStorage;
500+
bool HasDidSet;
501+
bool HasWillSet;
500502
public:
501503
SDKNodeDeclVar(SDKNodeInitInfo Info);
502504
static bool classof(const SDKNode *N);
@@ -509,6 +511,8 @@ class SDKNodeDeclVar : public SDKNodeDecl {
509511
void jsonize(json::Output &Out) override;
510512
void diagnose(SDKNode *Right) override;
511513
bool hasStorage() const { return HasStorage; }
514+
bool hasDidSet() const { return HasDidSet; }
515+
bool hasWillSet() const { return HasWillSet; }
512516
};
513517

514518
class SDKNodeDeclAbstractFunc : public SDKNodeDecl {
@@ -532,13 +536,17 @@ class SDKNodeDeclAbstractFunc : public SDKNodeDecl {
532536
class SDKNodeDeclSubscript: public SDKNodeDeclAbstractFunc {
533537
bool HasSetter;
534538
bool HasStorage;
539+
bool HasDidSet;
540+
bool HasWillSet;
535541
public:
536542
SDKNodeDeclSubscript(SDKNodeInitInfo Info);
537543
static bool classof(const SDKNode *N);
538544
bool hasSetter() const { return HasSetter; }
539545
bool hasStorage() const { return HasStorage; }
540546
void jsonize(json::Output &Out) override;
541547
void diagnose(SDKNode *Right) override;
548+
bool hasDidSet() const { return HasDidSet; }
549+
bool hasWillSet() const { return HasWillSet; }
542550
};
543551

544552
class SDKNodeDeclFunction: public SDKNodeDeclAbstractFunc {

0 commit comments

Comments
 (0)