about summary refs log tree commit diff
path: root/src/librustc/traits/specialize
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2017-04-18 15:48:32 -0400
committerNiko Matsakis <niko@alum.mit.edu>2017-04-19 07:20:36 -0400
commit93e10977d8b0ccd2cdc41f30e187e6ebecd3240b (patch)
treeac2091f50d318a0222853c8392c2d97fe80ee449 /src/librustc/traits/specialize
parentaa6c2b1cb73edad3ca1e8068151dd7254a3ebce1 (diff)
downloadrust-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.rs7
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 {:?}",