Skip to content

Commit c4251d2

Browse files
committed
Update to ensure downgradeToWarning doesn't get reset
1 parent d182d01 commit c4251d2

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

lib/Sema/ResilienceDiagnostics.cpp

+11-11
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,16 @@ bool TypeChecker::diagnoseInlinableDeclRefAccess(SourceLoc loc,
105105
}
106106

107107
DowngradeToWarning downgradeToWarning = DowngradeToWarning::No;
108+
// Don't change the order of the getDisallowedOriginKind call;
109+
// it can reset downgradeToWarning to NO so needs to be called here.
110+
auto originKind = getDisallowedOriginKind(D, where, downgradeToWarning);
111+
// For a default argument or property initializer, package type is
112+
// allowed at the use site with package access scope.
113+
auto allowedForPkgCtx = false;
114+
if (originKind == DisallowedOriginKind::None ||
115+
originKind == DisallowedOriginKind::PackageImport) {
116+
allowedForPkgCtx = where.isPackage() && declAccessScope.isPackage();
117+
}
108118

109119
// Swift 4.2 did not perform any checks for type aliases.
110120
if (isa<TypeAliasDecl>(D)) {
@@ -124,22 +134,12 @@ bool TypeChecker::diagnoseInlinableDeclRefAccess(SourceLoc loc,
124134
if (isa<TypeAliasDecl>(DC) && !Context.isSwiftVersionAtLeast(6))
125135
downgradeToWarning = DowngradeToWarning::Yes;
126136

127-
AccessLevel diagAccessLevel = declAccessScope.accessLevelForDiagnostics();
128-
129-
auto allowedForPkgCtx = false;
130-
auto originKind = getDisallowedOriginKind(D, where, downgradeToWarning);
131-
// For a default argument or property initializer, package type is
132-
// allowed at the use site with package access scope.
133-
if (originKind == DisallowedOriginKind::None ||
134-
originKind == DisallowedOriginKind::PackageImport) {
135-
allowedForPkgCtx = where.isPackage() && diagAccessLevel >= AccessLevel::Package;
136-
}
137-
138137
if (!allowedForPkgCtx) {
139138
auto diagID = diag::resilience_decl_unavailable;
140139
if (downgradeToWarning == DowngradeToWarning::Yes)
141140
diagID = diag::resilience_decl_unavailable_warn;
142141

142+
AccessLevel diagAccessLevel = declAccessScope.accessLevelForDiagnostics();
143143
Context.Diags.diagnose(loc, diagID, D, diagAccessLevel,
144144
fragileKind.getSelector());
145145

0 commit comments

Comments
 (0)