Skip to content

Commit 6ae12d7

Browse files
committed
Sema: use a select to clarify access-level import logic
Exportability issues from access-level imports are reported by both access-level checks and the exportability checker. We prevent duplicating diagnostics with some logic that is getting progressively more complex. Let's simplify it using a select statement.
1 parent be08c7f commit 6ae12d7

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

lib/Sema/ResilienceDiagnostics.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,19 @@ static bool diagnoseValueDeclRefExportability(SourceLoc loc, const ValueDecl *D,
279279
// Except for extensions and protocol conformances, we report them here.
280280
if (originKind == DisallowedOriginKind::InternalOrLessImport ||
281281
originKind == DisallowedOriginKind::PackageImport) {
282-
bool reportHere =
283-
reason == ExportabilityReason::ExtensionWithPublicMembers ||
284-
reason == ExportabilityReason::ExtensionWithPackageMembers ||
285-
reason == ExportabilityReason::ExtensionWithConditionalConformances ||
286-
reason == ExportabilityReason::ExtensionWithPackageConditionalConformances ||
287-
(reason == ExportabilityReason::Inheritance && isa<ProtocolDecl>(D));
282+
bool reportHere = [&] {
283+
switch (*reason) {
284+
case ExportabilityReason::ExtensionWithPublicMembers:
285+
case ExportabilityReason::ExtensionWithPackageMembers:
286+
case ExportabilityReason::ExtensionWithConditionalConformances:
287+
case ExportabilityReason::ExtensionWithPackageConditionalConformances:
288+
return true;
289+
case ExportabilityReason::Inheritance:
290+
return isa<ProtocolDecl>(D);
291+
default:
292+
return false;
293+
}
294+
}();
288295
if (!reportHere)
289296
return false;
290297
}

0 commit comments

Comments
 (0)