Skip to content

Commit ffe9c44

Browse files
committed
ASTWalker: getLazyInitializerWalkingBehavior() should not affect property wrappers
1 parent 7c1db3c commit ffe9c44

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

lib/AST/ASTWalker.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,22 +194,22 @@ class Traversal : public ASTVisitor<Traversal, Expr*, Stmt*,
194194
}
195195

196196
bool visitPatternBindingDecl(PatternBindingDecl *PBD) {
197-
bool isPropertyWrapperBackingProperty = false;
198-
if (auto singleVar = PBD->getSingleVar()) {
199-
isPropertyWrapperBackingProperty =
200-
singleVar->getOriginalWrappedProperty() != nullptr;
201-
}
197+
auto *singleVar = PBD->getSingleVar();
202198

203199
for (auto idx : range(PBD->getNumPatternEntries())) {
204200
if (Pattern *Pat = doIt(PBD->getPattern(idx)))
205201
PBD->setPattern(idx, Pat);
206202
else
207203
return true;
208204

209-
if (!PBD->getInit(idx) || isPropertyWrapperBackingProperty)
205+
if (!PBD->getInit(idx))
206+
continue;
207+
208+
if (singleVar && singleVar->getOriginalWrappedProperty())
210209
continue;
211210

212-
if (PBD->isInitializerSubsumed(idx) &&
211+
if (PBD->isInitializerSubsumed(idx) && singleVar &&
212+
singleVar->getAttrs().hasAttribute<LazyAttr>() &&
213213
Walker.getLazyInitializerWalkingBehavior() !=
214214
LazyInitializerWalking::InPatternBinding) {
215215
break;

0 commit comments

Comments
 (0)