Skip to content

Commit 5640e67

Browse files
authored
Merge pull request swiftlang#31508 from mdiep/incomplete-computed-properties-in-extensions
[Diags] Don't error twice for incomplete computed properties in extensions
2 parents 9c8be74 + caceece commit 5640e67

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

lib/Sema/TypeCheckStorage.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3064,6 +3064,13 @@ StorageImplInfoRequest::evaluate(Evaluator &evaluator,
30643064
readImpl = ReadImplKind::Stored;
30653065
}
30663066

3067+
// Extensions can't have stored properties. If there are braces, assume
3068+
// this is an incomplete computed property. This avoids an "extensions
3069+
// must not contain stored properties" error later on.
3070+
} else if (isa<ExtensionDecl>(storage->getDeclContext()) &&
3071+
storage->getBracesRange().isValid()) {
3072+
readImpl = ReadImplKind::Get;
3073+
30673074
// Otherwise, it's stored.
30683075
} else {
30693076
readImpl = ReadImplKind::Stored;

test/decl/var/properties.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,12 @@ var x12: X {
380380

381381
var x13: X {} // expected-error {{computed property must have accessors specified}}
382382

383+
struct X14 {}
384+
extension X14 {
385+
var x14: X {
386+
} // expected-error {{computed property must have accessors specified}}
387+
}
388+
383389
// Type checking problems
384390
struct Y { }
385391
var y: Y

0 commit comments

Comments
 (0)