)]}'
{
  "commit": "3a1cc9faf6ea8c4b5b552092dcd0145d366d3937",
  "tree": "aa6643088fed37cfe69c97638a10e4d71c7b9049",
  "parents": [
    "1e0091aae0ed8a05e280e7187231e414988d1ccf"
  ],
  "author": {
    "name": "Paul Berry",
    "email": "paulberry@google.com",
    "time": "Mon Dec 12 19:15:53 2022 +0000"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Dec 12 19:15:53 2022 +0000"
  },
  "message": "Flow analysis: update exhaustiveness logic for patterns.\n\nWhen patterns support is disabled, flow analysis considers a switch\nstatement to be exhaustive if it has a `default` clause or if the\nscrutinee type was an enum and all enum cases were covered (this\nmatches the behaviour of previous releases of Dart).\n\nWhen patterns support is enabled, flow analysis considers a switch\nstatement to be exhaustive if it has a `default` clause or if the\nscrutinee type is an \"exhaustive type\" (as defined in the patterns\nspec).  A later stage of analysis will check that such switch\nstatements truly are exhaustive, and issue a compile-time error if\nthey aren\u0027t.\n\nNote that as part of this change I\u0027ve modified the analyzer so that it\nonly attempts to track whether all enum cases are covered if patterns\nsupport is disabled.  I didn\u0027t make a corresponding change to the CFE\nbecause the CFE stores exhaustiveness information in the kernel output\n(`SwitchStatement.isExplicitlyExhaustive`) and I didn\u0027t want to break\nthat.\n\nBug: https://github.com/dart-lang/sdk/issues/50419\nChange-Id: Ib2e51971a1b814c003401b3d54d41f7a9ef9f59a\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/274720\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1684383db9876ef73200b052fb92b553fc4e1a26",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart",
      "new_id": "8668de05e94693c99a0243a358d7b49b2b023f1b",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"
    },
    {
      "type": "modify",
      "old_id": "8b005a0eb875ccfac1d0ff00fc5e1da75ba4fee1",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart",
      "new_id": "7bb9f91d363e020b3ec7d9e593289dd8bcad8a8d",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart"
    },
    {
      "type": "modify",
      "old_id": "58f84b3ba7d220727deeb569a9cd9f94ae18a22a",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/test/mini_ast.dart",
      "new_id": "bc4b16298f2085d44325db9f8619696b5e6817e3",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/mini_ast.dart"
    },
    {
      "type": "modify",
      "old_id": "9d5ad557b6e8af70bdfba8a48a88fde7674378ca",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/test/type_inference/type_inference_test.dart",
      "new_id": "23c661dcedc0fde1d8d656281c854b01a90dd1e0",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/type_inference/type_inference_test.dart"
    },
    {
      "type": "modify",
      "old_id": "cce507a9fd0a6b8428256d0bf3933a7f719b6c12",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/generated/resolver.dart",
      "new_id": "3260f454613927c81687fd60cd37f8ecde7a6482",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/generated/resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "275dea298d426a38688aaa38b811549a0215ea70",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart",
      "new_id": "1defcdc343098c39512006f9badba134ebf59eef",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart"
    },
    {
      "type": "modify",
      "old_id": "9f0a348d5559731238e542412eafb79a00671b2b",
      "old_mode": 33188,
      "old_path": "pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart",
      "new_id": "a8cbf08f2d1acc086cf7b5cd7709475c5e72255e",
      "new_mode": 33188,
      "new_path": "pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart"
    }
  ]
}
