mirror of https://github.com/rust-lang/rust.git
Rollup merge of #114827 - compiler-errors:next-solver-dyn-safe-candidates, r=lcnr
Only consider object candidates for object-safe dyn types in new solver
We apparently allow this per RFC2027 💀
r? lcnr
This commit is contained in:
commit
e4b9e72e58
|
@ -826,6 +826,11 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
|
||||||
ty::Dynamic(bounds, ..) => bounds,
|
ty::Dynamic(bounds, ..) => bounds,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Do not consider built-in object impls for non-object-safe types.
|
||||||
|
if bounds.principal_def_id().is_some_and(|def_id| !tcx.check_is_object_safe(def_id)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Consider all of the auto-trait and projection bounds, which don't
|
// Consider all of the auto-trait and projection bounds, which don't
|
||||||
// need to be recorded as a `BuiltinImplSource::Object` since they don't
|
// need to be recorded as a `BuiltinImplSource::Object` since they don't
|
||||||
// really have a vtable base...
|
// really have a vtable base...
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
// Check that we can manually implement an object-unsafe trait for its trait object.
|
// Check that we can manually implement an object-unsafe trait for its trait object.
|
||||||
|
|
||||||
|
// revisions: current next
|
||||||
|
//[next] compile-flags: -Ztrait-solver=next
|
||||||
// run-pass
|
// run-pass
|
||||||
|
|
||||||
#![feature(object_safe_for_dispatch)]
|
#![feature(object_safe_for_dispatch)]
|
||||||
|
|
Loading…
Reference in New Issue