]>
Commit | Line | Data |
---|---|---|
e8be2606 | 1 | use base_db::SourceDatabaseExt2 as _; |
c0240ec0 | 2 | use test_fixture::WithFixture; |
064997fb FG |
3 | |
4 | use crate::{db::HirDatabase, test_db::TestDB}; | |
5 | ||
6 | use super::visit_module; | |
7 | ||
8 | #[test] | |
9 | fn typing_whitespace_inside_a_function_should_not_invalidate_types() { | |
10 | let (mut db, pos) = TestDB::with_position( | |
11 | " | |
4b012472 FG |
12 | //- /lib.rs |
13 | fn foo() -> i32 { | |
14 | $01 + 1 | |
15 | }", | |
064997fb FG |
16 | ); |
17 | { | |
18 | let events = db.log_executed(|| { | |
19 | let module = db.module_for_file(pos.file_id); | |
20 | let crate_def_map = module.def_map(&db); | |
21 | visit_module(&db, &crate_def_map, module.local_id, &mut |def| { | |
22 | db.infer(def); | |
23 | }); | |
24 | }); | |
9c376795 | 25 | assert!(format!("{events:?}").contains("infer")) |
064997fb FG |
26 | } |
27 | ||
28 | let new_text = " | |
4b012472 FG |
29 | fn foo() -> i32 { |
30 | 1 | |
31 | + | |
32 | 1 | |
33 | }"; | |
064997fb | 34 | |
e8be2606 | 35 | db.set_file_text(pos.file_id, new_text); |
064997fb FG |
36 | |
37 | { | |
38 | let events = db.log_executed(|| { | |
39 | let module = db.module_for_file(pos.file_id); | |
40 | let crate_def_map = module.def_map(&db); | |
41 | visit_module(&db, &crate_def_map, module.local_id, &mut |def| { | |
42 | db.infer(def); | |
43 | }); | |
44 | }); | |
9c376795 | 45 | assert!(!format!("{events:?}").contains("infer"), "{events:#?}") |
064997fb FG |
46 | } |
47 | } | |
4b012472 FG |
48 | |
49 | #[test] | |
50 | fn typing_inside_a_function_should_not_invalidate_types_in_another() { | |
51 | let (mut db, pos) = TestDB::with_position( | |
52 | " | |
53 | //- /lib.rs | |
54 | fn foo() -> f32 { | |
55 | 1.0 + 2.0 | |
56 | } | |
57 | fn bar() -> i32 { | |
58 | $01 + 1 | |
59 | } | |
60 | fn baz() -> i32 { | |
61 | 1 + 1 | |
62 | }", | |
63 | ); | |
64 | { | |
65 | let events = db.log_executed(|| { | |
66 | let module = db.module_for_file(pos.file_id); | |
67 | let crate_def_map = module.def_map(&db); | |
68 | visit_module(&db, &crate_def_map, module.local_id, &mut |def| { | |
69 | db.infer(def); | |
70 | }); | |
71 | }); | |
72 | assert!(format!("{events:?}").contains("infer")) | |
73 | } | |
74 | ||
75 | let new_text = " | |
76 | fn foo() -> f32 { | |
77 | 1.0 + 2.0 | |
78 | } | |
79 | fn bar() -> i32 { | |
80 | 53 | |
81 | } | |
82 | fn baz() -> i32 { | |
83 | 1 + 1 | |
84 | } | |
85 | "; | |
86 | ||
e8be2606 | 87 | db.set_file_text(pos.file_id, new_text); |
4b012472 FG |
88 | |
89 | { | |
90 | let events = db.log_executed(|| { | |
91 | let module = db.module_for_file(pos.file_id); | |
92 | let crate_def_map = module.def_map(&db); | |
93 | visit_module(&db, &crate_def_map, module.local_id, &mut |def| { | |
94 | db.infer(def); | |
95 | }); | |
96 | }); | |
97 | assert!(format!("{events:?}").matches("infer").count() == 1, "{events:#?}") | |
98 | } | |
99 | } |