)]}'
{
  "commit": "d039e2865b27e6cd162df00f1fa58ee243672582",
  "tree": "51714368a475d10bbbab4142dbbde2babc56228e",
  "parents": [
    "630a3aafb04c8d7152a19d2d9deffe3105f76b26"
  ],
  "author": {
    "name": "Alexander Markov",
    "email": "alexmarkov@google.com",
    "time": "Thu May 15 15:37:25 2025 -0700"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu May 15 15:37:25 2025 -0700"
  },
  "message": "[tfa,aot,dart2wasm] More precise intersection of a wide cone type with an empty cone type\n\nWhen cone type has a large number of allocated subtypes, TFA uses\nsymbolic wide cone type as a faster approximation to speed up\nthe analysis.\n\nIntersection of wide cone type C1+ with cone type C2+ when\nthere is no subtyping relation between C1 and C2 results in\napproximate type C1+. As a result, analysis may fail to determine\nthat certain type test will never succeed.\n\nThis change improves precision of cone and wide cone intersections\nand unions in case cone type has an empty specialization\n(no allocated subtypes).\n\nTEST\u003dpkg/vm/testcases/transformations/type_flow/transformer/regress_60733.dart\nFixes https://github.com/dart-lang/sdk/issues/60733\n\nChange-Id: I51287d38a9e5f3c0ce88dab358d0825843a0de03\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/428840\nReviewed-by: Slava Egorov \u003cvegorov@google.com\u003e\nReviewed-by: Martin Kustermann \u003ckustermann@google.com\u003e\nCommit-Queue: Alexander Markov \u003calexmarkov@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b29ed36e74fe46b8e549b8167d77139ff9b2d94f",
      "old_mode": 33188,
      "old_path": "pkg/vm/lib/transformations/type_flow/types.dart",
      "new_id": "9e84d815f8ad2d6a497f44bba70a979c79988223",
      "new_mode": 33188,
      "new_path": "pkg/vm/lib/transformations/type_flow/types.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eaca3ccba530c3dbe11efbc39d22875200f2fb7b",
      "new_mode": 33188,
      "new_path": "pkg/vm/testcases/transformations/type_flow/transformer/regress_60733.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "89adb9c27ccb0e5aaa741ec670afb68de3ce5132",
      "new_mode": 33188,
      "new_path": "pkg/vm/testcases/transformations/type_flow/transformer/regress_60733.dart.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c1d7b57a33b6587a873135d62d625e22b3c0702c",
      "new_mode": 33188,
      "new_path": "pkg/vm/testcases/transformations/type_flow/transformer/regress_60733.dart.options"
    }
  ]
}
