@@ -258,10 +258,12 @@ mod tests {
258
258
. pop ( )
259
259
. unwrap ( ) ;
260
260
let fix = diagnostic. fix . unwrap ( ) ;
261
- let target_file_contents = analysis. file_text ( file_position. file_id ) . unwrap ( ) ;
262
261
let actual = {
263
- let mut actual = target_file_contents. to_string ( ) ;
262
+ let file_id = fix. source_change . source_file_edits . first ( ) . unwrap ( ) . file_id ;
263
+ let mut actual = analysis. file_text ( file_id) . unwrap ( ) . to_string ( ) ;
264
+
264
265
// Go from the last one to the first one, so that ranges won't be affected by previous edits.
266
+ // FIXME: https://github.com/rust-analyzer/rust-analyzer/issues/4901#issuecomment-644675309
265
267
for edit in fix. source_change . source_file_edits . iter ( ) . rev ( ) {
266
268
edit. edit . apply ( & mut actual) ;
267
269
}
@@ -277,29 +279,6 @@ mod tests {
277
279
) ;
278
280
}
279
281
280
- /// Checks that a diagnostic applies to the file containing the `<|>` cursor marker
281
- /// which has a fix that can apply to other files.
282
- fn check_apply_diagnostic_fix_in_other_file ( ra_fixture_before : & str , ra_fixture_after : & str ) {
283
- let ra_fixture_after = & trim_indent ( ra_fixture_after) ;
284
- let ( analysis, file_pos) = fixture:: position ( ra_fixture_before) ;
285
- let current_file_id = file_pos. file_id ;
286
- let diagnostic = analysis
287
- . diagnostics ( & DiagnosticsConfig :: default ( ) , current_file_id)
288
- . unwrap ( )
289
- . pop ( )
290
- . unwrap ( ) ;
291
- let mut fix = diagnostic. fix . unwrap ( ) ;
292
- let edit = fix. source_change . source_file_edits . pop ( ) . unwrap ( ) ;
293
- let changed_file_id = edit. file_id ;
294
- let before = analysis. file_text ( changed_file_id) . unwrap ( ) ;
295
- let actual = {
296
- let mut actual = before. to_string ( ) ;
297
- edit. edit . apply ( & mut actual) ;
298
- actual
299
- } ;
300
- assert_eq_text ! ( ra_fixture_after, & actual) ;
301
- }
302
-
303
282
/// Takes a multi-file input fixture with annotated cursor position and checks that no diagnostics
304
283
/// apply to the file containing the cursor.
305
284
pub ( crate ) fn check_no_diagnostics ( ra_fixture : & str ) {
@@ -736,25 +715,25 @@ struct Foo {
736
715
737
716
#[ test]
738
717
fn test_add_field_in_other_file_from_usage ( ) {
739
- check_apply_diagnostic_fix_in_other_file (
740
- r"
741
- //- /main.rs
742
- mod foo;
718
+ check_fix (
719
+ r# "
720
+ //- /main.rs
721
+ mod foo;
743
722
744
- fn main() {
745
- <|> foo::Foo { bar: 3, baz: false};
746
- }
747
- //- /foo.rs
748
- struct Foo {
749
- bar: i32
750
- }
751
- " ,
752
- r"
753
- struct Foo {
754
- bar: i32,
755
- pub(crate) baz: bool
756
- }
757
- " ,
723
+ fn main() {
724
+ foo::Foo { bar: 3, <|> baz: false};
725
+ }
726
+ //- /foo.rs
727
+ struct Foo {
728
+ bar: i32
729
+ }
730
+ "# ,
731
+ r# "
732
+ struct Foo {
733
+ bar: i32,
734
+ pub(crate) baz: bool
735
+ }
736
+ "# ,
758
737
)
759
738
}
760
739
0 commit comments