Skip to content

Commit

Permalink
Rollup merge of #114827 - compiler-errors:next-solver-dyn-safe-candid…
Browse files Browse the repository at this point in the history
…ates, r=lcnr

Only consider object candidates for object-safe dyn types in new solver

We apparently allow this per RFC2027 💀

r? lcnr
  • Loading branch information
GuillaumeGomez authored Aug 15, 2023
2 parents 0e7f9e5 + e8ab56f commit e4b9e72
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
5 changes: 5 additions & 0 deletions compiler/rustc_trait_selection/src/solve/assembly/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -826,6 +826,11 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
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
// need to be recorded as a `BuiltinImplSource::Object` since they don't
// really have a vtable base...
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// 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

#![feature(object_safe_for_dispatch)]
Expand Down

0 comments on commit e4b9e72

Please sign in to comment.