Skip to content

Commit 07e2dfd

Browse files
Merge pull request #40892 from LucianoPAlmeida/SR-15273-access
2 parents ac875d0 + 924e445 commit 07e2dfd

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
@@ -4294,9 +4294,9 @@ ConformanceChecker::resolveWitnessViaLookup(ValueDecl *requirement) {
42944294
protoAccessScope.accessLevelForDiagnostics(),
42954295
proto->getName());
42964296

4297-
if (auto *decl = dyn_cast<AbstractFunctionDecl>(witness))
4298-
if (decl->isMemberwiseInitializer())
4299-
return;
4297+
auto *decl = dyn_cast<AbstractFunctionDecl>(witness);
4298+
if (decl && decl->isSynthesized())
4299+
return;
43004300

43014301
diagnoseWitnessFixAccessLevel(diags, witness, requiredAccess,
43024302
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)