)]}'
{
  "commit": "b10ec24fe98a9eca2e3e975cbc1376f0b653cd25",
  "tree": "06c18fc84ba263f6bbbb9b89278cc49eb39ed5c9",
  "parents": [
    "6a90c21992e659de8f6c171d7ab6eaf7f4f9eba4"
  ],
  "author": {
    "name": "Paul Berry",
    "email": "paulberry@google.com",
    "time": "Tue Feb 14 14:42:36 2023 +0000"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Feb 14 14:42:36 2023 +0000"
  },
  "message": "Flow analysis: implement type promotion for record patterns.\n\nFor each subpattern of a record pattern, we define its \"demonstrated\ntype\" to be the type that the matched value has been promoted to if\nthe subpattern match succeeds.  At the conclusion of visiting a record\npattern, we promote the whole record pattern\u0027s matched value to a\nrecord type formed by combining together the demonstrated types of the\nsubpatterns.  So, for example, the pattern `(int _, String _)`\npromotes the matched value to `(int, String)`.\n\nThis change contains a lot of specific tests, to make sure the\ndemonstrated type of each kind of pattern behaves as expected; but the\nactual machinery is general, since it just takes advantage of the type\npromotion performed by the subpatterns.\n\nBug: https://github.com/dart-lang/sdk/issues/50419\nChange-Id: Ie4da81964b5ade657c23a598ee18982b793fb4ac\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/282806\nReviewed-by: Johnni Winther \u003cjohnniwinther@google.com\u003e\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "19f5d74cdc7414cf6f3ac67470e1e89d3631fa0c",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart",
      "new_id": "68656e6a981250feed094a93e585a39ba0618648",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"
    },
    {
      "type": "modify",
      "old_id": "d0989f7ff456cd3b3f179e80deb0a06f4761d920",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart",
      "new_id": "49216430b05575cbfe7e91b22ed88fa5526560e2",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart"
    },
    {
      "type": "modify",
      "old_id": "adc47dec1a3a5fecb2119f506d07bdf5a4233185",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/test/mini_ast.dart",
      "new_id": "8376bd04a636f9c47eb75e4194c56defa0088da5",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/mini_ast.dart"
    }
  ]
}
