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.rs78
1 files changed, 34 insertions, 44 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 bf7dddacd8..20bfcc2dee 100644
--- a/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs
+++ b/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs
@@ -1,7 +1,7 @@
//! This diagnostic provides an assist for creating a struct definition from a JSON
//! example.
-use hir::{ImportPathConfig, PathResolution, Semantics};
+use hir::{FindPathConfig, PathResolution, Semantics};
use ide_db::text_edit::TextEdit;
use ide_db::{
EditionedFileId, FileRange, FxHashMap, RootDatabase,
@@ -141,44 +141,34 @@ pub(crate) fn json_in_items(
let scope = scb.make_import_scope_mut(import_scope);
let current_module = semantics_scope.module();
- let cfg = ImportPathConfig {
+ let cfg = FindPathConfig {
prefer_no_std: config.prefer_no_std,
prefer_prelude: config.prefer_prelude,
prefer_absolute: config.prefer_absolute,
allow_unstable: true,
};
- if !scope_has("Serialize") {
- if let Some(PathResolution::Def(it)) = serialize_resolved {
- if let Some(it) = current_module.find_use_path(
- sema.db,
- it,
- config.insert_use.prefix_kind,
- cfg,
- ) {
- insert_use(
- &scope,
- mod_path_to_ast(&it, edition),
- &config.insert_use,
- );
- }
- }
+ if !scope_has("Serialize")
+ && let Some(PathResolution::Def(it)) = serialize_resolved
+ && let Some(it) = current_module.find_use_path(
+ sema.db,
+ it,
+ config.insert_use.prefix_kind,
+ cfg,
+ )
+ {
+ insert_use(&scope, mod_path_to_ast(&it, edition), &config.insert_use);
}
- if !scope_has("Deserialize") {
- if let Some(PathResolution::Def(it)) = deserialize_resolved {
- if let Some(it) = current_module.find_use_path(
- sema.db,
- it,
- config.insert_use.prefix_kind,
- cfg,
- ) {
- insert_use(
- &scope,
- mod_path_to_ast(&it, edition),
- &config.insert_use,
- );
- }
- }
+ if !scope_has("Deserialize")
+ && let Some(PathResolution::Def(it)) = deserialize_resolved
+ && let Some(it) = current_module.find_use_path(
+ sema.db,
+ it,
+ config.insert_use.prefix_kind,
+ cfg,
+ )
+ {
+ insert_use(&scope, mod_path_to_ast(&it, edition), &config.insert_use);
}
let mut sc = scb.finish();
sc.insert_source_edit(vfs_file_id, edit.finish());
@@ -243,7 +233,7 @@ mod tests {
}
#[derive(Serialize)]
- struct Root1{ bar: f64, bay: i64, baz: (), r#box: bool, foo: String }
+ struct Root1 { bar: f64, bay: i64, baz: (), r#box: bool, foo: String }
"#,
);
@@ -262,9 +252,9 @@ mod tests {
}
"#,
r#"
- struct Value1{ }
- struct Bar1{ kind: String, value: Value1 }
- struct Root1{ bar: Bar1, foo: String }
+ struct Value1 { }
+ struct Bar1 { kind: String, value: Value1 }
+ struct Root1 { bar: Bar1, foo: String }
"#,
);
@@ -294,12 +284,12 @@ mod tests {
}
"#,
r#"
- struct Address1{ house: i64, street: String }
- struct User1{ address: Address1, email: String }
- struct AnotherUser1{ user: User1 }
- struct Address2{ house: i64, street: String }
- struct User2{ address: Address2, email: String }
- struct Root1{ another_user: AnotherUser1, user: User2 }
+ struct Address1 { house: i64, street: String }
+ struct User1 { address: Address1, email: String }
+ struct AnotherUser1 { user: User1 }
+ struct Address2 { house: i64, street: String }
+ struct User2 { address: Address2, email: String }
+ struct Root1 { another_user: AnotherUser1, user: User2 }
"#,
);
@@ -336,9 +326,9 @@ mod tests {
use serde::Deserialize;
#[derive(Serialize, Deserialize)]
- struct OfObject1{ x: i64, y: i64 }
+ struct OfObject1 { x: i64, y: i64 }
#[derive(Serialize, Deserialize)]
- struct Root1{ empty: Vec<_>, nested: Vec<Vec<Vec<i64>>>, of_object: Vec<OfObject1>, of_string: Vec<String> }
+ struct Root1 { empty: Vec<_>, nested: Vec<Vec<Vec<i64>>>, of_object: Vec<OfObject1>, of_string: Vec<String> }
"#,
);