diff options
| author | Michael Goulet <michael@errs.io> | 2023-12-06 20:22:33 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-12-06 20:22:37 +0000 |
| commit | 5d3a294b46896d0b0c7c2cb3cf6ce4085a1e64fe (patch) | |
| tree | 13d039db67cf18ff795413dbd71f4dc8a038de60 | |
| parent | f32d29837d3642475e23716cd8af5711d00c01ae (diff) | |
| download | rust-5d3a294b46896d0b0c7c2cb3cf6ce4085a1e64fe.tar.gz rust-5d3a294b46896d0b0c7c2cb3cf6ce4085a1e64fe.zip | |
Only check principal trait ref for object safety
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/wf.rs | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/wf.rs b/compiler/rustc_trait_selection/src/traits/wf.rs index 3a890d70d79..0f8d9c6bf4b 100644 --- a/compiler/rustc_trait_selection/src/traits/wf.rs +++ b/compiler/rustc_trait_selection/src/traits/wf.rs @@ -761,18 +761,15 @@ impl<'a, 'tcx> WfPredicates<'a, 'tcx> { let defer_to_coercion = self.tcx().features().object_safe_for_dispatch; if !defer_to_coercion { - let cause = self.cause(traits::WellFormed(None)); - let component_traits = data.auto_traits().chain(data.principal_def_id()); - let tcx = self.tcx(); - self.out.extend(component_traits.map(|did| { - traits::Obligation::with_depth( - tcx, - cause.clone(), + if let Some(principal) = data.principal_def_id() { + self.out.push(traits::Obligation::with_depth( + self.tcx(), + self.cause(traits::WellFormed(None)), depth, param_env, - ty::Binder::dummy(ty::PredicateKind::ObjectSafe(did)), - ) - })); + ty::Binder::dummy(ty::PredicateKind::ObjectSafe(principal)), + )); + } } } |
