Skip to content

Commit af71c5d

Browse files
committed
[Property Wrappers] Ban non-member property wrappers with observers,
just like we do for regular non-member properties.
1 parent 176391f commit af71c5d

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

lib/Sema/TypeCheckStorage.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2737,6 +2737,8 @@ PropertyWrapperBackingPropertyInfoRequest::evaluate(Evaluator &evaluator,
27372737
initializer);
27382738
pbd->setInit(0, initializer);
27392739
pbd->setInitializerChecked(0);
2740+
} else if (var->hasObservers() && !dc->isTypeContext()) {
2741+
var->diagnose(diag::observingprop_requires_initializer);
27402742
}
27412743

27422744
if (var->getOpaqueResultTypeDecl()) {

test/decl/var/property_wrappers.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,11 @@ func testLocalContext() {
167167
@WrapperWithStorageRef
168168
var hasProjection = 10
169169
let _: Wrapper = $hasProjection
170+
171+
@WrapperWithInitialValue
172+
var uninitialized: Int { // expected-error {{non-member observing properties require an initializer}}
173+
didSet {}
174+
}
170175
}
171176

172177
// ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)