)]}'
{
  "commit": "0c34999585012a0a779e8a4da4f71aee4809da38",
  "tree": "92ca9d4305c7d2ff0924f4c81fa3882e614a45e2",
  "parents": [
    "4a333ea6145f7fe89bbc733696e605f2ba69f77a"
  ],
  "author": {
    "name": "Chloe Stefantsova",
    "email": "cstefantsova@google.com",
    "time": "Fri Aug 09 07:10:42 2024 +0000"
  },
  "committer": {
    "name": "dart-internal-monorepo",
    "email": "dart-internal-monorepo@dart-ci-internal.iam.gserviceaccount.com",
    "time": "Fri Aug 09 00:12:45 2024 -0700"
  },
  "message": "[analyzer][cfe] Make SharedType into a family of recursive types\n\nSharedType and its subtypes now all declare one recursive type\nvariable Type with the bound SharedType\u003cType\u003e. It allows to treate\nSharedType and its subtypes as an abstract familty of types that has a\nspecific structure.\n\nMore specifically, the type variables Type and TypeSchema in the\nabstract classes for shared algorithms between the Analyzer and the\nCFE can now be defined recursively as extending SharedType\u003cType\u003e and\nSharedType\u003cTypeSchema\u003e, giving both types and type schemas the\nstructure of the family of types with the root at SharedType.\n\nOne of the benefits for that is that some abstract members become\nunnecessary. For example, a type or type schema can now be tested for\nhaving the shape of the type \u0027dynamic\u0027 with a direct is-check,\ncomparing them, correspondingly, with SharedType\u003cType\u003e and\nSharedType\u003cTypeSchema\u003e.\n\nMore importantly, having the family of recursive types lays the\nfoundation for further work on sharing the type structure between the\nAnalyzer and the CFE.\n\nChange-Id: I67904f878668c035702092e8c21d3ce66f5ca469\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/378700\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Chloe Stefantsova \u003ccstefantsova@google.com\u003e\n\nhttps://dart.googlesource.com/sdk/+/cf0e927a43c54966b2921039009f54a59b51a55d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "62878adbc496f55e481f6515d24507a9936bac83",
      "old_mode": 33188,
      "old_path": "DEPS",
      "new_id": "79aec2bdb8817b019d53c1a2a6f5139bf71b95d0",
      "new_mode": 33188,
      "new_path": "DEPS"
    },
    {
      "type": "modify",
      "old_id": "e5b67932d63cfbd51c2c7b1ed65719be19bf6068",
      "old_mode": 33188,
      "old_path": "commits.json",
      "new_id": "f630db1c40e10af5267106e1929e8454c7b8d79d",
      "new_mode": 33188,
      "new_path": "commits.json"
    }
  ]
}
