From 041489472bfcbea11a71014fd349bee51ab4bc2b Mon Sep 17 00:00:00 2001 From: Jubilee <46493976+workingjubilee@users.noreply.github.com> Date: Mon, 13 Sep 2021 20:49:27 -0700 Subject: [PATCH] Revert "Fix non-capturing closure return type coercion" --- compiler/rustc_typeck/src/check/coercion.rs | 6 ---- src/test/ui/coercion/issue-88097.rs | 31 --------------------- 2 files changed, 37 deletions(-) delete mode 100644 src/test/ui/coercion/issue-88097.rs diff --git a/compiler/rustc_typeck/src/check/coercion.rs b/compiler/rustc_typeck/src/check/coercion.rs index 6fe96e4cc27b2..3bfab9d513f37 100644 --- a/compiler/rustc_typeck/src/check/coercion.rs +++ b/compiler/rustc_typeck/src/check/coercion.rs @@ -1003,12 +1003,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { exprs.len() ); - // The following check fixes #88097, where the compiler erroneously - // attempted to coerce a closure type to itself via a function pointer. - if prev_ty == new_ty { - return Ok(prev_ty); - } - // Special-case that coercion alone cannot handle: // Function items or non-capturing closures of differing IDs or InternalSubsts. let (a_sig, b_sig) = { diff --git a/src/test/ui/coercion/issue-88097.rs b/src/test/ui/coercion/issue-88097.rs deleted file mode 100644 index e543e1bae9239..0000000000000 --- a/src/test/ui/coercion/issue-88097.rs +++ /dev/null @@ -1,31 +0,0 @@ -// In #88097, the compiler attempted to coerce a closure type to itself via -// a function pointer, which caused an unnecessary error. Check that this -// behavior has been fixed. - -// check-pass - -fn peculiar() -> impl Fn(u8) -> u8 { - return |x| x + 1 -} - -fn peculiar2() -> impl Fn(u8) -> u8 { - return |x| x + 1; -} - -fn peculiar3() -> impl Fn(u8) -> u8 { - let f = |x| x + 1; - return f -} - -fn peculiar4() -> impl Fn(u8) -> u8 { - let f = |x| x + 1; - f -} - -fn peculiar5() -> impl Fn(u8) -> u8 { - let f = |x| x + 1; - let g = |x| x + 2; - return if true { f } else { g } -} - -fn main() {}