about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLev Iskandarov <iskandarov11@inbox.ru>2024-04-20 21:04:53 +0300
committerLev Iskandarov <iskandarov11@inbox.ru>2024-04-20 21:04:53 +0300
commit846f8046b0ac332620e72d7227c01676356854d2 (patch)
tree4bbce257c7466dc575dcb093e7d4a440c601256c
parent570c725f698cffb16a0444e7b58ec872ee6cb607 (diff)
downloadrust-846f8046b0ac332620e72d7227c01676356854d2.tar.gz
rust-846f8046b0ac332620e72d7227c01676356854d2.zip
add test with multiple names
-rw-r--r--src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs
index 659af270c6d..b3dde977b1c 100644
--- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/json_is_not_rust.rs
+++ b/src/tools/rust-analyzer/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": "example@example.com"
+                },
+                "another_user": {
+                    "user": {
+                        "address": {
+                            "street": "Main St",
+                            "house": 3
+                        },
+                        "email": "example@example.com"
+                    }
+                }
+            }
+            "#,
+            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#"