Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/tests/coercion.rs')
| -rw-r--r-- | crates/hir-ty/src/tests/coercion.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/crates/hir-ty/src/tests/coercion.rs b/crates/hir-ty/src/tests/coercion.rs index 0e512ef5ec..bf59fadc2c 100644 --- a/crates/hir-ty/src/tests/coercion.rs +++ b/crates/hir-ty/src/tests/coercion.rs @@ -709,3 +709,47 @@ fn test() { "#, ); } + +#[test] +fn assign_coerce_struct_fields() { + check_no_mismatches( + r#" +//- minicore: coerce_unsized +struct S; +trait Tr {} +impl Tr for S {} +struct V<T> { t: T } + +fn main() { + let a: V<&dyn Tr>; + a = V { t: &S }; + + let mut a: V<&dyn Tr> = V { t: &S }; + a = V { t: &S }; +} + "#, + ); +} + +#[test] +fn destructuring_assign_coerce_struct_fields() { + check( + r#" +//- minicore: coerce_unsized +struct S; +trait Tr {} +impl Tr for S {} +struct V<T> { t: T } + +fn main() { + let a: V<&dyn Tr>; + (a,) = V { t: &S }; + //^^^^expected V<&S>, got (V<&dyn Tr>,) + + let mut a: V<&dyn Tr> = V { t: &S }; + (a,) = V { t: &S }; + //^^^^expected V<&S>, got (V<&dyn Tr>,) +} + "#, + ); +} |