)]}'
{
  "commit": "d20efdc4c5bfaf2bb7ccfad3744ba6cdde7bbe3e",
  "tree": "f8fe424258dddd2231ebd450f6c88cb619d31fa8",
  "parents": [
    "e8ac25242fa87d5b7678580fc42c75c0dc45c4b4"
  ],
  "author": {
    "name": "A4-Tacks",
    "email": "wdsjxhno1001@163.com",
    "time": "Wed Dec 10 18:35:13 2025 +0800"
  },
  "committer": {
    "name": "A4-Tacks",
    "email": "wdsjxhno1001@163.com",
    "time": "Wed Dec 10 18:42:33 2025 +0800"
  },
  "message": "Fix assist `and` -\u003e `and_then` parameter\n\n- And fix fallback parentheses\n\nExample\n---\n```rust\nfn foo() {\n    let foo \u003d Some(\"foo\");\n    return foo.and$0(Some(\"bar\"));\n}\n```\n\n**Before this PR**\n\n```rust\nfn foo() {\n    let foo \u003d Some(\"foo\");\n    return foo.and_then(|| Some(\"bar\"));\n}\n```\n\n**After this PR**\n\n```rust\nfn foo() {\n    let foo \u003d Some(\"foo\");\n    return foo.and_then(|it| Some(\"bar\"));\n}\n```\n\n---\n\n```rust\nstruct Func { f: fn() -\u003e i32 }\nfn foo() {\n    let foo \u003d true;\n    let func \u003d Func { f: || 2 };\n    let x \u003d foo.then$0(func.f);\n}\n```\n\n**Before this PR**\n\n```text\nrequest handler panicked: Failed to make ast node `syntax::ast::generated::nodes::CallExpr` from text const C: () \u003d func.f();\n```\n\n**After this PR**\n\n```rust\nstruct Func { f: fn() -\u003e i32 }\nfn foo() {\n    let foo \u003d true;\n    let func \u003d Func { f: || 2 };\n    let x \u003d foo.then_some((func.f)());\n}\n```\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c85ec734c07a538d0915f3b0786a50490230a9a7",
      "old_mode": 33188,
      "old_path": "crates/ide-assists/src/handlers/replace_method_eager_lazy.rs",
      "new_id": "6ca3e26ca01871df5a2e0649c8204def71b03dec",
      "new_mode": 33188,
      "new_path": "crates/ide-assists/src/handlers/replace_method_eager_lazy.rs"
    }
  ]
}
