)]}'
{
  "commit": "e24971d9d1a7b2ab9abcb5a1c37a36cd6f351680",
  "tree": "fa8d434a3d7151c88477e61aa060712b6be0d773",
  "parents": [
    "54a7200a18c1a32fceb9fe9615787188ba3b2157"
  ],
  "author": {
    "name": "Matt Brown",
    "email": "matt@mattnworb.com",
    "time": "Mon Feb 02 05:57:09 2026 -0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Feb 02 10:57:09 2026 +0000"
  },
  "message": "support AssignExpr statements in edit.FindRuleByName() (#1369)\n\n* support AssignExpr statements in edit.FindRuleByName()\n\nWe have what is probably an unconventional style in some of our BUILD\nfiles where a macro is used to define several targets and returns a\nstruct of some information so that things like labels of generated\ntargets can be passed as attributes to other targets in the same\nBUILD file, without the BUILD file needing to hardcode or be aware of\nthe naming convention of the macro\u0027s internals.\n\nbuildozer and unused_deps are unable to operate on targets in\n`AssignExpr` statements since `edit.FindRuleByName()` and\n`edit.IndexOfRuleByName()` skip over any nodes that are not call\nexpressions. This commit adapts these functions to be able to find call\nexpressions that are on the right-hand side of an assignment expression.\n\nfixes #1306\n\n* refactor test based on feedback\n\n* refactor check for CallExpr or AssignExpr based on feedback",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f885ac43a5448034f94eaa80de3adb6a97fbc7d8",
      "old_mode": 33188,
      "old_path": "edit/edit.go",
      "new_id": "5bc91641f3858d07b76d26f39635fc820edfe686",
      "new_mode": 33188,
      "new_path": "edit/edit.go"
    },
    {
      "type": "modify",
      "old_id": "24f798eb24979ce6aee35478a613f98c346b0713",
      "old_mode": 33188,
      "old_path": "edit/edit_test.go",
      "new_id": "762f42bf8805f3e033d93f03511b130e22d2f9b3",
      "new_mode": 33188,
      "new_path": "edit/edit_test.go"
    }
  ]
}
