From 96d9408dd9c932d5302c357d37f1a0262dcb51a9 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Wed, 16 Mar 2016 13:22:35 +0100 Subject: [PATCH] Resolve conflicts and extend the test --- src/librustc/middle/liveness.rs | 5 +++-- src/test/run-pass/issue-31597.rs | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs index 5c1b64ac002..0bfb830efc1 100644 --- a/src/librustc/middle/liveness.rs +++ b/src/librustc/middle/liveness.rs @@ -113,7 +113,7 @@ use middle::def::*; use middle::pat_util; use middle::ty::{self, TyCtxt, ParameterEnvironment}; -use middle::traits; +use middle::traits::{self, ProjectionMode}; use middle::infer; use lint; use util::nodemap::NodeMap; @@ -1497,7 +1497,8 @@ fn check_ret(&self, let param_env = ParameterEnvironment::for_item(&self.ir.tcx, id); let infcx = infer::new_infer_ctxt(&self.ir.tcx, &self.ir.tcx.tables, - Some(param_env)); + Some(param_env), + ProjectionMode::Any); let cause = traits::ObligationCause::dummy(); let norm = traits::fully_normalize(&infcx, cause, diff --git a/src/test/run-pass/issue-31597.rs b/src/test/run-pass/issue-31597.rs index 132d476f9dc..9acd6384b75 100644 --- a/src/test/run-pass/issue-31597.rs +++ b/src/test/run-pass/issue-31597.rs @@ -20,4 +20,18 @@ impl Make for () { fn make() -> Self::Out {} } +// Also make sure we don't hit an ICE when the projection can't be known +fn f() -> ::Out { loop {} } + +// ...and that it works with a blanket impl +trait Tr { + type Assoc; +} + +impl Tr for T { + type Assoc = (); +} + +fn g() -> ::Assoc { } + fn main() {} -- 2.44.0