Skip to content

Commit 924e445

Browse files
[Sema] Do not offer fixit for synthesized witness mismatch access
1 parent 58d080a commit 924e445

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

lib/Sema/TypeCheckProtocol.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4348,9 +4348,9 @@ ConformanceChecker::resolveWitnessViaLookup(ValueDecl *requirement) {
43484348
protoAccessScope.accessLevelForDiagnostics(),
43494349
proto->getName());
43504350

4351-
if (auto *decl = dyn_cast<AbstractFunctionDecl>(witness))
4352-
if (decl->isMemberwiseInitializer())
4353-
return;
4351+
auto *decl = dyn_cast<AbstractFunctionDecl>(witness);
4352+
if (decl && decl->isSynthesized())
4353+
return;
43544354

43554355
diagnoseWitnessFixAccessLevel(diags, witness, requiredAccess,
43564356
isSetter);

test/attr/accessibility_proto.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,11 @@ public struct NonPublicMemberwiseInitStruct: PublicInitProto {
104104
// expected-error@-1 {{initializer 'init(value:)' must be declared public because it matches a requirement in public protocol 'PublicInitProto'}}
105105
public var value: Int
106106
}
107+
108+
// SR-15273
109+
public protocol PublicEmptyInit {
110+
init()
111+
}
112+
public struct Buggy: PublicEmptyInit {
113+
// expected-error@-1 {{initializer 'init()' must be declared public because it matches a requirement in public protocol 'PublicEmptyInit'}}
114+
}

0 commit comments

Comments
 (0)