Skip to content

Commit 7da5ac7

Browse files
authored
Merge pull request #37880 from etcwilde/ewilde/fix-actor-init-diagnostic
Fix actor init diagnostic
2 parents b18b29e + b4f3daa commit 7da5ac7

File tree

5 files changed

+14
-4
lines changed

5 files changed

+14
-4
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1529,7 +1529,7 @@ NOTE(requires_stored_property_inits_here,none,
15291529
"%select{superclass|class}1 %0 requires all stored properties to have "
15301530
"initial values%select{| or use @NSManaged}2", (Type, bool, bool))
15311531
ERROR(class_without_init,none,
1532-
"class %0 has no initializers", (Type))
1532+
"%select{class|actor}0 %1 has no initializers", (bool, Type))
15331533
NOTE(note_no_in_class_init_1,none,
15341534
"stored property %0 without initial value prevents synthesized "
15351535
"initializers",

lib/Sema/TypeCheckDeclPrimary.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1225,6 +1225,7 @@ static std::string getFixItStringForDecodable(ClassDecl *CD,
12251225
static void diagnoseClassWithoutInitializers(ClassDecl *classDecl) {
12261226
ASTContext &C = classDecl->getASTContext();
12271227
C.Diags.diagnose(classDecl, diag::class_without_init,
1228+
classDecl->isExplicitActor(),
12281229
classDecl->getDeclaredType());
12291230

12301231
// HACK: We've got a special case to look out for and diagnose specifically to

test/Distributed/distributed_actor_is_experimental.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ actor SomeActor {}
66

77
@available(SwiftStdlib 5.5, *)
88
distributed actor DA {} // expected-error{{'_Distributed' module not imported, required for 'distributed actor'}}
9-
// expected-error@-1{{class 'DA' has no initializers}}
9+
// expected-error@-1{{actor 'DA' has no initializers}}
1010

1111
@available(SwiftStdlib 5.5, *)
1212
distributed actor class DAC {} // expected-error{{distributed' can only be applied to 'actor' definitions, and distributed actor-isolated async functions}}
@@ -24,7 +24,7 @@ actor A {
2424

2525
@available(SwiftStdlib 5.5, *)
2626
distributed actor DA2 { // expected-error{{'_Distributed' module not imported, required for 'distributed actor'}}
27-
// expected-error@-1{{class 'DA2' has no initializers}}
27+
// expected-error@-1{{actor 'DA2' has no initializers}}
2828
func normal() async {}
2929
distributed func dist() {}
3030
distributed func distAsync() async {}

test/Distributed/distributed_missing_import.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ actor SomeActor { }
66

77
@available(SwiftStdlib 5.5, *)
88
distributed actor MissingImportDistributedActor_0 { } // expected-error{{'_Distributed' module not imported, required for 'distributed actor'}}
9-
// expected-error@-1{{class 'MissingImportDistributedActor_0' has no initializers}}
9+
// expected-error@-1{{actor 'MissingImportDistributedActor_0' has no initializers}}
1010

1111
let t: ActorTransport // expected-error{{cannot find type 'ActorTransport' in scope}}
1212
let a: ActorAddress // expected-error{{cannot find type 'ActorAddress' in scope}}

test/decl/var/default_init.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,12 @@ func testBadDefaultInit() {
5151
_ = NotInitializableOptionalStruct() // expected-error {{missing argument for parameter 'opt' in call}}
5252
_ = NotInitializableOptionalClass() // expected-error {{'NotInitializableOptionalClass' cannot be constructed because it has no accessible initializers}}
5353
}
54+
55+
// expected-error@+1{{actor 'NotInitializableActor' has no initializers}}
56+
actor NotInitializableActor {
57+
58+
// expected-note@+1{{stored property 'a' without initial value prevents synthesized initializers}}
59+
var a: Int
60+
// expected-note@+1{{stored property 'b' without initial value prevents synthesized initializers}}
61+
var b: Float
62+
}

0 commit comments

Comments
 (0)