diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs index e47b15e3781..8c9d1a38e70 100644 --- a/src/librustc/hir/lowering.rs +++ b/src/librustc/hir/lowering.rs @@ -1018,7 +1018,7 @@ impl<'a> LoweringContext<'a> { } PathParameters::Parenthesized(ref data) => match parenthesized_generic_args { ParenthesizedGenericArgs::Ok => - self.lower_parenthesized_parameter_data(data, itctx), + self.lower_parenthesized_parameter_data(data), ParenthesizedGenericArgs::Warn => { self.sess.buffer_lint(PARENTHESIZED_PARAMS_IN_TYPES_AND_MODULES, CRATE_NODE_ID, data.span, msg.into()); @@ -1063,8 +1063,7 @@ impl<'a> LoweringContext<'a> { } fn lower_parenthesized_parameter_data(&mut self, - data: &ParenthesizedParameterData, - itctx: ImplTraitContext) + data: &ParenthesizedParameterData) -> (hir::PathParameters, bool) { const DISALLOWED: ImplTraitContext = ImplTraitContext::Disallowed; let &ParenthesizedParameterData { ref inputs, ref output, span } = data; @@ -1080,7 +1079,7 @@ impl<'a> LoweringContext<'a> { bindings: hir_vec![hir::TypeBinding { id: self.next_id().node_id, name: Symbol::intern(FN_OUTPUT_NAME), - ty: output.as_ref().map(|ty| self.lower_ty(&ty, itctx)) + ty: output.as_ref().map(|ty| self.lower_ty(&ty, DISALLOWED)) .unwrap_or_else(|| mk_tup(self, hir::HirVec::new(), span)), span: output.as_ref().map_or(span, |ty| ty.span), }], diff --git a/src/test/run-pass/impl-trait/auxiliary/xcrate.rs b/src/test/run-pass/impl-trait/auxiliary/xcrate.rs index e9074f8c230..e4f525a9826 100644 --- a/src/test/run-pass/impl-trait/auxiliary/xcrate.rs +++ b/src/test/run-pass/impl-trait/auxiliary/xcrate.rs @@ -10,9 +10,10 @@ #![feature(conservative_impl_trait)] -pub fn fourway_add(a: i32) -> impl Fn(i32) -> impl Fn(i32) -> impl Fn(i32) -> i32 { - move |b| move |c| move |d| a + b + c + d -} +// NOTE commented out due to issue #45994 +//pub fn fourway_add(a: i32) -> impl Fn(i32) -> impl Fn(i32) -> impl Fn(i32) -> i32 { +// move |b| move |c| move |d| a + b + c + d +//} fn some_internal_fn() -> u32 { 1 diff --git a/src/test/run-pass/impl-trait/xcrate.rs b/src/test/run-pass/impl-trait/xcrate.rs index 6d00c46fa35..35ae185b3e1 100644 --- a/src/test/run-pass/impl-trait/xcrate.rs +++ b/src/test/run-pass/impl-trait/xcrate.rs @@ -13,6 +13,7 @@ extern crate xcrate; fn main() { - assert_eq!(xcrate::fourway_add(1)(2)(3)(4), 10); +// NOTE line below commeted out due to issue #45994 +// assert_eq!(xcrate::fourway_add(1)(2)(3)(4), 10); xcrate::return_closure_accessing_internal_fn()(); }