Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/context/tests.rs')
-rw-r--r--crates/ide-completion/src/context/tests.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/crates/ide-completion/src/context/tests.rs b/crates/ide-completion/src/context/tests.rs
index 75c20968e1..7a8c70f190 100644
--- a/crates/ide-completion/src/context/tests.rs
+++ b/crates/ide-completion/src/context/tests.rs
@@ -434,3 +434,53 @@ fn f(thing: u32) -> &u32 {
expect!["ty: u32, name: ?"],
);
}
+
+#[test]
+fn expected_type_assign() {
+ check_expected_type_and_name(
+ r#"
+enum State { Stop }
+fn foo() {
+ let x: &mut State = &mut State::Stop;
+ x = $0;
+}
+"#,
+ expect![[r#"ty: &'_ mut State, name: ?"#]],
+ );
+}
+
+#[test]
+fn expected_type_deref_assign() {
+ check_expected_type_and_name(
+ r#"
+enum State { Stop }
+fn foo() {
+ let x: &mut State = &mut State::Stop;
+ match x {
+ State::Stop => {
+ *x = $0;
+ },
+ }
+}
+"#,
+ expect![[r#"ty: State, name: ?"#]],
+ );
+}
+
+#[test]
+fn expected_type_deref_assign_at_block_end() {
+ check_expected_type_and_name(
+ r#"
+enum State { Stop }
+fn foo() {
+ let x: &mut State = &mut State::Stop;
+ match x {
+ State::Stop => {
+ *x = $0
+ },
+ }
+}
+"#,
+ expect![[r#"ty: State, name: ?"#]],
+ );
+}