diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-01-10 05:08:02 +0900 |
|---|---|---|
| committer | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-01-20 07:06:27 +0900 |
| commit | 2ecc48ffa17d55ec02f3beb5bb17c718cb439202 (patch) | |
| tree | 1e3d45f8eecb520e288f523cd5389b5187c13a46 /src | |
| parent | c0e02ad724f05f73b957b3d6f6314a9a2e5c284e (diff) | |
| download | rust-2ecc48ffa17d55ec02f3beb5bb17c718cb439202.tar.gz rust-2ecc48ffa17d55ec02f3beb5bb17c718cb439202.zip | |
Fix ICE #68025
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_typeck/expr_use_visitor.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/closures/issue-68025.rs | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/librustc_typeck/expr_use_visitor.rs b/src/librustc_typeck/expr_use_visitor.rs index be00c57763a..47635209b08 100644 --- a/src/librustc_typeck/expr_use_visitor.rs +++ b/src/librustc_typeck/expr_use_visitor.rs @@ -327,10 +327,10 @@ impl<'a, 'tcx> ExprUseVisitor<'a, 'tcx> { } fn walk_callee(&mut self, call: &hir::Expr<'_>, callee: &hir::Expr<'_>) { - let callee_ty = return_if_err!(self.mc.expr_ty_adjusted(callee)); + let callee_ty = self.mc.tables.expr_ty_adjusted(callee); debug!("walk_callee: callee={:?} callee_ty={:?}", callee, callee_ty); match callee_ty.kind { - ty::FnDef(..) | ty::FnPtr(_) => { + ty::FnDef(..) | ty::FnPtr(_) | ty::Closure(..) => { self.consume_expr(callee); } ty::Error => {} diff --git a/src/test/ui/closures/issue-68025.rs b/src/test/ui/closures/issue-68025.rs new file mode 100644 index 00000000000..261bfd60aae --- /dev/null +++ b/src/test/ui/closures/issue-68025.rs @@ -0,0 +1,12 @@ +// check-pass + +fn foo<F, G>(_: G, _: Box<F>) +where + F: Fn(), + G: Fn(Box<F>), +{ +} + +fn main() { + foo(|f| (*f)(), Box::new(|| {})); +} |
