diff --git a/src/librustc/middle/traits/select.rs b/src/librustc/middle/traits/select.rs index 864d666d24fd..6fcf5ef6ad8e 100644 --- a/src/librustc/middle/traits/select.rs +++ b/src/librustc/middle/traits/select.rs @@ -1143,8 +1143,13 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { } match self_ty.sty { - ty::ty_infer(ty::TyVar(_)) | ty::ty_trait(..) => {}, + ty::ty_infer(ty::TyVar(_)) => { + // the defaulted impl might apply, we don't know + if ty::trait_has_default_impl(self.tcx(), def_id) { + candidates.ambiguous = true; + } + } _ => { if ty::trait_has_default_impl(self.tcx(), def_id) { candidates.vec.push(DefaultImplCandidate(def_id.clone()))