[CSDiagnostics] Tailor diagnostic for Copyable conformance mismatch in key path context

This commit is contained in:
Pavel Yaskevich
2025-03-17 17:22:02 -07:00
parent a8baec6c41
commit 6c2b12547b

View File

@@ -683,6 +683,15 @@ bool MissingConformanceFailure::diagnoseAsError() {
}
}
if (isExpr<KeyPathExpr>(anchor)) {
if (auto *P = dyn_cast<ProtocolDecl>(protocolType->getAnyNominal())) {
if (P->isSpecificProtocol(KnownProtocolKind::Copyable)) {
emitDiagnostic(diag::expr_keypath_noncopyable_type, nonConformingType);
return true;
}
}
}
if (diagnoseAsAmbiguousOperatorRef())
return true;