)]}'
{
  "commit": "1d096c23cf854f55c19cee061f080caacc9400db",
  "tree": "deb8c9d9891955630f1f68d8ee5398fed17b0471",
  "parents": [
    "ecd380f217b196be20b3f9b63910bf03aa95f81d"
  ],
  "author": {
    "name": "Paul Berry",
    "email": "paulberry@google.com",
    "time": "Tue Feb 22 20:17:21 2022 +0000"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Tue Feb 22 20:17:21 2022 +0000"
  },
  "message": "Simplify analyzer logic for `.call` tearoffs.\n\nPreviously, the job of determining whether a `.call` tearoff was\nnecessary for an expression fell to the expression that contained it.\nThis made things complicated for set, map, and list literals, because\nit required the literal to be visited twice (once to resolve the\nsubexpressions, and another time to insert `.call` tearoffs).  With\nthis change, insertion of a `.call` tearoff is handled by the visitor\nfor the expression itself.\n\n(Note that there are a few cases where we don\u0027t insert a `.call`\ntearoff, or we do so based on a special type, based on the parent\nexpression.  The language team is considering removing these special\ncases, but for now, we maintain the existing behavior.  We handle\nthese special cases by looking at `expression.parent`).\n\nChange-Id: I85c813f8c105e3b962dd89d5a7fa8467506078ba\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/232660\nReviewed-by: Samuel Rawlins \u003csrawlins@google.com\u003e\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "16e5f202b252dc0140e6d8a3c406d9b3a6bf1e13",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart",
      "new_id": "dfa4a1eccf071a094f4b638fef4d9bab4c7e37d9",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "5c56ff19742eaaa09560bcaa089b56a954e576c1",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart",
      "new_id": "dcde026d69e314655bdc142bfe41014c89b287e2",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "6ae7fe45a78c44701e09d6b99048fde43109dd14",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart",
      "new_id": "17d7f04b5035086da4d0fda95eb2b06e15ea8ed8",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "4e32f72f99a98c066fbeec0c265745f37b0123a3",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/generated/resolver.dart",
      "new_id": "97dc5457037bc9a1c48fe41bf0db4c8027ea83cd",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/generated/resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "50d0ec5b049b90e92aebe9838e9a586ea15d044b",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart",
      "new_id": "77954c0acde1da9f2adca3045fe42960ea4aa283",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart"
    }
  ]
}
