Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/tests/incremental.rs')
-rw-r--r--crates/hir-ty/src/tests/incremental.rs72
1 files changed, 61 insertions, 11 deletions
diff --git a/crates/hir-ty/src/tests/incremental.rs b/crates/hir-ty/src/tests/incremental.rs
index bb15ca8c43..28e84e480d 100644
--- a/crates/hir-ty/src/tests/incremental.rs
+++ b/crates/hir-ty/src/tests/incremental.rs
@@ -9,11 +9,10 @@ use super::visit_module;
fn typing_whitespace_inside_a_function_should_not_invalidate_types() {
let (mut db, pos) = TestDB::with_position(
"
- //- /lib.rs
- fn foo() -> i32 {
- $01 + 1
- }
- ",
+//- /lib.rs
+fn foo() -> i32 {
+ $01 + 1
+}",
);
{
let events = db.log_executed(|| {
@@ -27,12 +26,11 @@ fn typing_whitespace_inside_a_function_should_not_invalidate_types() {
}
let new_text = "
- fn foo() -> i32 {
- 1
- +
- 1
- }
- ";
+fn foo() -> i32 {
+ 1
+ +
+ 1
+}";
db.set_file_text(pos.file_id, Arc::from(new_text));
@@ -47,3 +45,55 @@ fn typing_whitespace_inside_a_function_should_not_invalidate_types() {
assert!(!format!("{events:?}").contains("infer"), "{events:#?}")
}
}
+
+#[test]
+fn typing_inside_a_function_should_not_invalidate_types_in_another() {
+ let (mut db, pos) = TestDB::with_position(
+ "
+//- /lib.rs
+fn foo() -> f32 {
+ 1.0 + 2.0
+}
+fn bar() -> i32 {
+ $01 + 1
+}
+fn baz() -> i32 {
+ 1 + 1
+}",
+ );
+ {
+ let events = db.log_executed(|| {
+ let module = db.module_for_file(pos.file_id);
+ let crate_def_map = module.def_map(&db);
+ visit_module(&db, &crate_def_map, module.local_id, &mut |def| {
+ db.infer(def);
+ });
+ });
+ assert!(format!("{events:?}").contains("infer"))
+ }
+
+ let new_text = "
+fn foo() -> f32 {
+ 1.0 + 2.0
+}
+fn bar() -> i32 {
+ 53
+}
+fn baz() -> i32 {
+ 1 + 1
+}
+";
+
+ db.set_file_text(pos.file_id, Arc::from(new_text));
+
+ {
+ let events = db.log_executed(|| {
+ let module = db.module_for_file(pos.file_id);
+ let crate_def_map = module.def_map(&db);
+ visit_module(&db, &crate_def_map, module.local_id, &mut |def| {
+ db.infer(def);
+ });
+ });
+ assert!(format!("{events:?}").matches("infer").count() == 1, "{events:#?}")
+ }
+}