)]}'
{
  "commit": "aaa78e15c4f04b311ae050fcb6ebdbaac8fc5835",
  "tree": "c6da8c2a99e5cfede11e43ebfd61d0b320cd7fdc",
  "parents": [
    "de5824b6d0457b0e35cb77de2c0d99402d63770f"
  ],
  "author": {
    "name": "A4-Tacks",
    "email": "wdsjxhno1001@163.com",
    "time": "Mon May 25 20:31:57 2026 +0800"
  },
  "committer": {
    "name": "A4-Tacks",
    "email": "wdsjxhno1001@163.com",
    "time": "Mon May 25 20:43:10 2026 +0800"
  },
  "message": "fix: Fix extract variable in token tree replace range\n\n`SyntaxEditor::replace` only replacing range with the same parent\n\nExample\n---\n```rust\nfn main() {\n    let maybe_str \u003d Some(\"world\");\n    write!((), \"Hello, {}!\", $0maybe_str.unwrap()$0);\n}\n```\n\n**Before this PR**\n\n```rust\nfn main() {\n    let maybe_str \u003d Some(\"world\");\n    let $0var_name \u003d maybe_str.unwrap();\n    write!((), \"Hello, {}!\", var_namemaybe_str.unwrap());\n}\n```\n\n**After this PR**\n\n```rust\nfn main() {\n    let maybe_str \u003d Some(\"world\");\n    let $0var_name \u003d maybe_str.unwrap();\n    write!((), \"Hello, {}!\", var_name);\n}\n```\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d4a0490f16a41383357ec7c56f7ec0306e62c7b5",
      "old_mode": 33188,
      "old_path": "crates/ide-assists/src/handlers/extract_variable.rs",
      "new_id": "e1b91c9e89d5afe6837128eb17a284ece8acd91a",
      "new_mode": 33188,
      "new_path": "crates/ide-assists/src/handlers/extract_variable.rs"
    }
  ]
}
