)]}'
{
  "commit": "7d703f75fc2c853009701286998a2d9ecaaa8341",
  "tree": "dfb5e9800dcb4b18de3dfdd1fcc994ba42b4c365",
  "parents": [
    "2c316040d7cfe85e1017c2752934067c99c3b8dc"
  ],
  "author": {
    "name": "Konstantin Shcheglov",
    "email": "scheglov@google.com",
    "time": "Thu Feb 12 13:50:24 2026 -0800"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Feb 12 13:50:24 2026 -0800"
  },
  "message": "CQ. Fix scoping of for-loop variables in initializers\n\nEnsure loop-local variables introduced by `for` parts are bound\nconsistently during resolution, while still reporting reads that occur\nbefore the declaration point.\n\nThe resolver now predeclares `ForPartsWithDeclarations` variables in the\nloop’s local scope before traversing the initializer/condition/updaters.\nThis makes lexical lookup within `forLoopParts` resolve to the\nloop-local element (even in `var x \u003d x`), and allows later verification\nto correctly report `REFERENCED_BEFORE_DECLARATION` instead of treating\nthe name as outer/undefined.\n\nAlso align foreach resolution by defining the declared loop variable\nonly after visiting the iterable expression, and update error\nverification to hide not-yet-declared elements consistently for blocks,\nswitch members, and `for` parts via a generalized\n`HiddenElements.forElements` helper.\n\nChange-Id: Ifab327737bb033fe05f1d765196796924378ac5e\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/480120\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c4ab641eb0d74708c569f7c9613e8e4f9579cf6f",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart",
      "new_id": "4f6054b7d848ea4e457e915a55dc83431efa37ad",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"
    },
    {
      "type": "modify",
      "old_id": "21edb844cb586e6325afa0def51ad8d13d07f142",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/generated/error_verifier.dart",
      "new_id": "9425c27842fa699e81d64ad8e59e52ca93fa35bf",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/generated/error_verifier.dart"
    },
    {
      "type": "modify",
      "old_id": "fc97dbea5a8f08d94f23a9d4f1a3b4f934766792",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/generated/resolver.dart",
      "new_id": "87bc44bc610fd33b2804bfe8d1345f2cd17ece66",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/generated/resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "2d5359e111d4976c3e31051e78f7cc98a5bc3fff",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/test/src/dart/resolution/for_element_test.dart",
      "new_id": "dd6ff9e9071a1fdd8ddcf04c3c3de3c84edb51bc",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/test/src/dart/resolution/for_element_test.dart"
    },
    {
      "type": "modify",
      "old_id": "8ff6f6e20357c781653528be87a010c0ce0ebeda",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/test/src/dart/resolution/for_statement_test.dart",
      "new_id": "7e4d6f34b1cfa9b0f5540a02a1cd71ae999269da",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/test/src/dart/resolution/for_statement_test.dart"
    },
    {
      "type": "modify",
      "old_id": "aa1eee2d1b738402f991d71b7ce5814d788e8e82",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/test/src/diagnostics/referenced_before_declaration_test.dart",
      "new_id": "6be7d7afcc76aae6e521e5a35a7edb191497f129",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/test/src/diagnostics/referenced_before_declaration_test.dart"
    },
    {
      "type": "modify",
      "old_id": "c7f2040e1a90e42dbe939f239c0a91c1c247fca1",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart",
      "new_id": "af3f5dcb746d4f3fcfd5431b5d23949dd238f37c",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart"
    },
    {
      "type": "modify",
      "old_id": "4f555b212ef41f3bfefe2917bf3e4701b6d65c4f",
      "old_mode": 33188,
      "old_path": "tests/language/loop/for_test.dart",
      "new_id": "7eeee41ff0ae95dcbd44e1a97f53b0ae8110ae6c",
      "new_mode": 33188,
      "new_path": "tests/language/loop/for_test.dart"
    }
  ]
}
