]> git.proxmox.com Git - rustc.git/blame - src/tools/rust-analyzer/crates/hir-ty/src/tests/incremental.rs
bump version to 1.80.1+dfsg1-1~bpo12+pve1
[rustc.git] / src / tools / rust-analyzer / crates / hir-ty / src / tests / incremental.rs
CommitLineData
e8be2606 1use base_db::SourceDatabaseExt2 as _;
c0240ec0 2use test_fixture::WithFixture;
064997fb
FG
3
4use crate::{db::HirDatabase, test_db::TestDB};
5
6use super::visit_module;
7
8#[test]
9fn typing_whitespace_inside_a_function_should_not_invalidate_types() {
10 let (mut db, pos) = TestDB::with_position(
11 "
4b012472
FG
12//- /lib.rs
13fn 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
29fn 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]
50fn typing_inside_a_function_should_not_invalidate_types_in_another() {
51 let (mut db, pos) = TestDB::with_position(
52 "
53//- /lib.rs
54fn foo() -> f32 {
55 1.0 + 2.0
56}
57fn bar() -> i32 {
58 $01 + 1
59}
60fn 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 = "
76fn foo() -> f32 {
77 1.0 + 2.0
78}
79fn bar() -> i32 {
80 53
81}
82fn 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}