Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/tests/simple.rs')
| -rw-r--r-- | crates/hir-ty/src/tests/simple.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/crates/hir-ty/src/tests/simple.rs b/crates/hir-ty/src/tests/simple.rs index 6c7dbe1db6..b272c2c28b 100644 --- a/crates/hir-ty/src/tests/simple.rs +++ b/crates/hir-ty/src/tests/simple.rs @@ -2887,6 +2887,43 @@ fn f() { } #[test] +fn closure_kind_with_predicates() { + check_types( + r#" +//- minicore: fn +#![feature(unboxed_closures)] + +struct X<T: FnOnce()>(T); + +fn f1() -> impl FnOnce() { + || {} + // ^^^^^ impl FnOnce() +} + +fn f2(c: impl FnOnce<(), Output = i32>) {} + +fn test { + let x1 = X(|| {}); + let c1 = x1.0; + // ^^ impl FnOnce() + + let c2 = || {}; + // ^^ impl Fn() + let x2 = X(c2); + let c3 = x2.0 + // ^^ impl Fn() + + let c4 = f1(); + // ^^ impl FnOnce() + ?Sized + + f2(|| { 0 }); + // ^^^^^^^^ impl FnOnce() -> i32 +} + "#, + ) +} + +#[test] fn derive_macro_should_work_for_associated_type() { check_types( r#" |