diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2017-04-18 15:48:32 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2017-04-19 07:20:36 -0400 |
| commit | 93e10977d8b0ccd2cdc41f30e187e6ebecd3240b (patch) | |
| tree | ac2091f50d318a0222853c8392c2d97fe80ee449 /src/librustc/traits/specialize | |
| parent | aa6c2b1cb73edad3ca1e8068151dd7254a3ebce1 (diff) | |
| download | rust-93e10977d8b0ccd2cdc41f30e187e6ebecd3240b.tar.gz rust-93e10977d8b0ccd2cdc41f30e187e6ebecd3240b.zip | |
propagate other obligations that were left out
cc #32730 -- I left exactly one instance where I wasn't sure of the right behavior.
Diffstat (limited to 'src/librustc/traits/specialize')
| -rw-r--r-- | src/librustc/traits/specialize/mod.rs | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/librustc/traits/specialize/mod.rs b/src/librustc/traits/specialize/mod.rs index 92b7c736d42..5f02688be34 100644 --- a/src/librustc/traits/specialize/mod.rs +++ b/src/librustc/traits/specialize/mod.rs @@ -218,7 +218,7 @@ fn fulfill_implication<'a, 'gcx, 'tcx>(infcx: &InferCtxt<'a, 'gcx, 'tcx>, -> Result<&'tcx Substs<'tcx>, ()> { let selcx = &mut SelectionContext::new(&infcx); let target_substs = infcx.fresh_substs_for_item(DUMMY_SP, target_impl); - let (target_trait_ref, obligations) = impl_trait_ref_and_oblig(selcx, + let (target_trait_ref, mut obligations) = impl_trait_ref_and_oblig(selcx, target_impl, target_substs); @@ -227,9 +227,8 @@ fn fulfill_implication<'a, 'gcx, 'tcx>(infcx: &InferCtxt<'a, 'gcx, 'tcx>, &ObligationCause::dummy(), source_trait_ref, target_trait_ref) { - Ok(InferOk { obligations, .. }) => { - // FIXME(#32730) propagate obligations - assert!(obligations.is_empty()) + Ok(InferOk { obligations: o, .. }) => { + obligations.extend(o); } Err(_) => { debug!("fulfill_implication: {:?} does not unify with {:?}", |
