diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-05-25 14:25:15 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2021-05-25 14:25:15 +0100 |
commit | 33fdd512e318f86ccd66b84ce6128c03eb44cf77 (patch) | |
tree | 146d712f24c290963bb268e443f02b59dd79f26a /crates/hir_ty/src/tests | |
parent | f3cfd8afb6db1ee0a8449655703172a0c8cf5411 (diff) | |
parent | 7c6f764ad6d7c6fc964be9fd2e96da717e2b2cc1 (diff) |
Merge #8987
8987: Fix lowering of FnOnce() without return type r=flodiebold a=flodiebold
This should result in an implicit `-> ()`, not leaving out the binding.
Co-authored-by: Florian Diebold <[email protected]>
Diffstat (limited to 'crates/hir_ty/src/tests')
-rw-r--r-- | crates/hir_ty/src/tests/traits.rs | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/crates/hir_ty/src/tests/traits.rs b/crates/hir_ty/src/tests/traits.rs index 71905baeb..6cd8786ea 100644 --- a/crates/hir_ty/src/tests/traits.rs +++ b/crates/hir_ty/src/tests/traits.rs | |||
@@ -3078,7 +3078,7 @@ fn infer_fn_trait_arg() { | |||
3078 | 3078 | ||
3079 | #[test] | 3079 | #[test] |
3080 | fn infer_box_fn_arg() { | 3080 | fn infer_box_fn_arg() { |
3081 | // The type mismatch is a bug | 3081 | // The type mismatch is because we don't define Unsize and CoerceUnsized |
3082 | check_infer_with_mismatches( | 3082 | check_infer_with_mismatches( |
3083 | r#" | 3083 | r#" |
3084 | //- /lib.rs deps:std | 3084 | //- /lib.rs deps:std |
@@ -3138,7 +3138,7 @@ fn foo() { | |||
3138 | 555..557 'ps': {unknown} | 3138 | 555..557 'ps': {unknown} |
3139 | 559..561 '{}': () | 3139 | 559..561 '{}': () |
3140 | 568..569 'f': Box<dyn FnOnce(&Option<i32>)> | 3140 | 568..569 'f': Box<dyn FnOnce(&Option<i32>)> |
3141 | 568..573 'f(&s)': FnOnce::Output<dyn FnOnce(&Option<i32>), (&Option<i32>,)> | 3141 | 568..573 'f(&s)': () |
3142 | 570..572 '&s': &Option<i32> | 3142 | 570..572 '&s': &Option<i32> |
3143 | 571..572 's': Option<i32> | 3143 | 571..572 's': Option<i32> |
3144 | 549..562: expected Box<dyn FnOnce(&Option<i32>)>, got Box<|{unknown}| -> ()> | 3144 | 549..562: expected Box<dyn FnOnce(&Option<i32>)>, got Box<|{unknown}| -> ()> |
@@ -3608,3 +3608,25 @@ fn main() { | |||
3608 | "#]], | 3608 | "#]], |
3609 | ) | 3609 | ) |
3610 | } | 3610 | } |
3611 | |||
3612 | #[test] | ||
3613 | fn fn_returning_unit() { | ||
3614 | check_infer_with_mismatches( | ||
3615 | r#" | ||
3616 | #[lang = "fn_once"] | ||
3617 | trait FnOnce<Args> { | ||
3618 | type Output; | ||
3619 | } | ||
3620 | |||
3621 | fn test<F: FnOnce()>(f: F) { | ||
3622 | let _: () = f(); | ||
3623 | }"#, | ||
3624 | expect![[r#" | ||
3625 | 82..83 'f': F | ||
3626 | 88..112 '{ ...f(); }': () | ||
3627 | 98..99 '_': () | ||
3628 | 106..107 'f': F | ||
3629 | 106..109 'f()': () | ||
3630 | "#]], | ||
3631 | ); | ||
3632 | } | ||