From e8df95d77f65a3a1456f7e10d9d1dd209acf2879 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 19 Feb 2015 11:28:01 -0500 Subject: [PATCH] mark candidate set ambig for defaulted traits where self-type is not yet known --- src/librustc/middle/traits/select.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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()))