Skip to content

Commit 1b9d80a

Browse files
committed
ASTWalker: getLazyInitializerWalkingBehavior() should not affect property wrappers
1 parent 8477058 commit 1b9d80a

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
@@ -195,22 +195,22 @@ class Traversal : public ASTVisitor<Traversal, Expr*, Stmt*,
195195
}
196196

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

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

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

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

0 commit comments

Comments
 (0)