Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/json_is_not_rust.rs')
-rw-r--r--crates/ide-diagnostics/src/handlers/json_is_not_rust.rs22
1 files changed, 15 insertions, 7 deletions
diff --git a/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs b/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs
index 20bfcc2dee..24f1e3ad83 100644
--- a/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs
+++ b/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs
@@ -2,12 +2,11 @@
//! example.
use hir::{FindPathConfig, PathResolution, Semantics};
+use ide_db::imports::insert_use::insert_uses_with_editor;
use ide_db::text_edit::TextEdit;
use ide_db::{
- EditionedFileId, FileRange, FxHashMap, RootDatabase,
- helpers::mod_path_to_ast,
- imports::insert_use::{ImportScope, insert_use},
- source_change::SourceChangeBuilder,
+ EditionedFileId, FileRange, FxHashMap, RootDatabase, helpers::mod_path_to_ast,
+ imports::insert_use::ImportScope, source_change::SourceChangeBuilder,
};
use itertools::Itertools;
use stdx::{format_to, never};
@@ -138,7 +137,7 @@ pub(crate) fn json_in_items(
.stable()
.with_fixes(Some(vec![{
let mut scb = SourceChangeBuilder::new(vfs_file_id);
- let scope = scb.make_import_scope_mut(import_scope);
+ let editor = scb.make_editor(import_scope.as_syntax_node());
let current_module = semantics_scope.module();
let cfg = FindPathConfig {
@@ -148,6 +147,7 @@ pub(crate) fn json_in_items(
allow_unstable: true,
};
+ let mut imports_to_insert = Vec::new();
if !scope_has("Serialize")
&& let Some(PathResolution::Def(it)) = serialize_resolved
&& let Some(it) = current_module.find_use_path(
@@ -157,7 +157,7 @@ pub(crate) fn json_in_items(
cfg,
)
{
- insert_use(&scope, mod_path_to_ast(&it, edition), &config.insert_use);
+ imports_to_insert.push(mod_path_to_ast(&it, edition));
}
if !scope_has("Deserialize")
&& let Some(PathResolution::Def(it)) = deserialize_resolved
@@ -168,8 +168,16 @@ pub(crate) fn json_in_items(
cfg,
)
{
- insert_use(&scope, mod_path_to_ast(&it, edition), &config.insert_use);
+ imports_to_insert.push(mod_path_to_ast(&it, edition));
}
+
+ insert_uses_with_editor(
+ &import_scope,
+ imports_to_insert,
+ &config.insert_use,
+ &editor,
+ );
+ scb.add_file_edits(vfs_file_id, editor);
let mut sc = scb.finish();
sc.insert_source_edit(vfs_file_id, edit.finish());
fix("convert_json_to_struct", "Convert JSON to struct", sc, range)