Rollup merge of #144534 - RalfJung:should_check_for_sync, r=compiler-errors
check_static_item: explain should_check_for_sync choices Follow-up to https://github.com/rust-lang/rust/pull/144226. r? ``@oli-obk``
This commit is contained in:
commit
ea7e539386
2 changed files with 9 additions and 3 deletions
|
|
@ -768,7 +768,9 @@ pub(crate) fn check_item_type(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Result<(),
|
|||
check_static_inhabited(tcx, def_id);
|
||||
check_static_linkage(tcx, def_id);
|
||||
let ty = tcx.type_of(def_id).instantiate_identity();
|
||||
res = res.and(wfcheck::check_static_item(tcx, def_id, ty, true));
|
||||
res = res.and(wfcheck::check_static_item(
|
||||
tcx, def_id, ty, /* should_check_for_sync */ true,
|
||||
));
|
||||
}
|
||||
DefKind::Const => res = res.and(wfcheck::check_const_item(tcx, def_id)),
|
||||
_ => unreachable!(),
|
||||
|
|
|
|||
|
|
@ -221,7 +221,9 @@ pub(super) fn type_of(tcx: TyCtxt<'_>, def_id: LocalDefId) -> ty::EarlyBinder<'_
|
|||
let ty = icx.lower_ty(ty);
|
||||
// MIR relies on references to statics being scalars.
|
||||
// Verify that here to avoid ill-formed MIR.
|
||||
match check_static_item(tcx, def_id, ty, false) {
|
||||
// We skip the `Sync` check to avoid cycles for type-alias-impl-trait,
|
||||
// relying on the fact that non-Sync statics don't ICE the rest of the compiler.
|
||||
match check_static_item(tcx, def_id, ty, /* should_check_for_sync */ false) {
|
||||
Ok(()) => ty,
|
||||
Err(guar) => Ty::new_error(tcx, guar),
|
||||
}
|
||||
|
|
@ -286,7 +288,9 @@ pub(super) fn type_of(tcx: TyCtxt<'_>, def_id: LocalDefId) -> ty::EarlyBinder<'_
|
|||
let ty = icx.lower_ty(ty);
|
||||
// MIR relies on references to statics being scalars.
|
||||
// Verify that here to avoid ill-formed MIR.
|
||||
match check_static_item(tcx, def_id, ty, false) {
|
||||
// We skip the `Sync` check to avoid cycles for type-alias-impl-trait,
|
||||
// relying on the fact that non-Sync statics don't ICE the rest of the compiler.
|
||||
match check_static_item(tcx, def_id, ty, /* should_check_for_sync */ false) {
|
||||
Ok(()) => ty,
|
||||
Err(guar) => Ty::new_error(tcx, guar),
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue