)]}'
{
  "commit": "375152e07f9262c651a603bbb8b722cf810e7d64",
  "tree": "0ebf162ca4f685d3c3753a6d5b9faf44db1a402c",
  "parents": [
    "8773b6618f4690f74c5ba86b11ff3451afd809ee"
  ],
  "author": {
    "name": "Paul Berry",
    "email": "paulberry@google.com",
    "time": "Wed Apr 09 09:29:32 2025 -0700"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Apr 09 09:29:32 2025 -0700"
  },
  "message": "[sound flow analysis] Implement behaviors for null-aware operations.\n\nThis change updates the flow analysis logic for `?.` expressions, so\nthat when the language feature `sound-flow-analysis` is enabled, the\nstatic type of the target is checked for nullability. If it\u0027s\nnon-nullable, then the \"shortcut\" control flow path (the control flow\npath in which the null-aware operation is not executed) is considered\nunreachable.\n\nOne pre-existing flow analysis test was made redundant by this\nchange. Another needed a minor tweak to continue passing.\n\nThere is no behavioral change if the feature `sound-flow-analysis` is\ndisabled.\n\nBug: https://github.com/dart-lang/sdk/issues/60438\nChange-Id: I3cd92dd49d4393b40f0ec888b643f0353de5e2d4\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/420466\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nReviewed-by: Chloe Stefantsova \u003ccstefantsova@google.com\u003e\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "22e8f7bab43d9f281b37c028c95855c67231ff0b",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart",
      "new_id": "b54b45940c44ca9ebaade9f9fc084a418441cb81",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"
    },
    {
      "type": "modify",
      "old_id": "1ec72de1aa724d63a7f05927bbb94c777d5ba5af",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart",
      "new_id": "6b6765c1503625336f5c3610f1e409d4b030c413",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart"
    },
    {
      "type": "modify",
      "old_id": "1475d27f48f2c81ab7f8030880edd0c516ce7f02",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/test/mini_ast.dart",
      "new_id": "171b90ee67844bca4127a83ccb6d33e6a6d83a6e",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/mini_ast.dart"
    }
  ]
}
