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.rs38
1 files changed, 37 insertions, 1 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 659af270c6..b3dde977b1 100644
--- a/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs
+++ b/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs
@@ -30,7 +30,8 @@ struct State {
impl State {
fn generate_new_name(&mut self, name: &str) -> ast::Name {
let name = stdx::to_camel_case(name);
- let count = if let Some(count) = self.names.get(&name) {
+ let count = if let Some(count) = self.names.get_mut(&name) {
+ *count += 1;
*count
} else {
self.names.insert(name.clone(), 1);
@@ -258,6 +259,41 @@ mod tests {
}
#[test]
+ fn naming() {
+ check_fix(
+ r#"
+ {$0
+ "user": {
+ "address": {
+ "street": "Main St",
+ "house": 3
+ },
+ "email": "[email protected]"
+ },
+ "another_user": {
+ "user": {
+ "address": {
+ "street": "Main St",
+ "house": 3
+ },
+ "email": "[email protected]"
+ }
+ }
+ }
+ "#,
+ 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 }
+
+ "#,
+ );
+ }
+
+ #[test]
fn arrays() {
check_fix(
r#"