[SE-0458] Don't warn about unsafe conformances outside of strict safety mode

This commit is contained in:
Doug Gregor
2025-02-24 17:19:18 -08:00
parent 068fd14037
commit 29d904f09d
2 changed files with 19 additions and 0 deletions

View File

@@ -296,6 +296,13 @@ bool swift::enumerateUnsafeUses(ArrayRef<ProtocolConformanceRef> conformances,
SourceLoc loc,
llvm::function_ref<bool(UnsafeUse)> fn) {
for (auto conformance : conformances) {
if (conformance.isInvalid())
continue;
ASTContext &ctx = conformance.getRequirement()->getASTContext();
if (!ctx.LangOpts.hasFeature(Feature::WarnUnsafe))
return false;
if (!conformance.hasEffect(EffectKind::Unsafe))
continue;

View File

@@ -0,0 +1,12 @@
// RUN: %target-typecheck-verify-swift -enable-experimental-feature AllowUnsafeAttribute -print-diagnostic-groups
// REQUIRES: swift_feature_AllowUnsafeAttribute
protocol P { }
struct X: @unsafe P { }
func returnMe(x: X) -> any P {
x
}