repr_transparent_external_private_fields: treat rustc_pub_transparent types as local

This commit is contained in:
Pavel Grigorenko 2024-08-24 20:39:26 +03:00
parent b9033bdd92
commit 06f2d73b2b
2 changed files with 27 additions and 1 deletions

View file

@ -1259,7 +1259,8 @@ pub(super) fn check_transparent<'tcx>(tcx: TyCtxt<'tcx>, adt: ty::AdtDef<'tcx>)
ty::Tuple(list) => list.iter().try_for_each(|t| check_non_exhaustive(tcx, t)),
ty::Array(ty, _) => check_non_exhaustive(tcx, *ty),
ty::Adt(def, args) => {
if !def.did().is_local() {
if !def.did().is_local() && !tcx.has_attr(def.did(), sym::rustc_pub_transparent)
{
let non_exhaustive = def.is_variant_list_non_exhaustive()
|| def
.variants()