)]}'
{
  "commit": "588fadcd4940887fd0faf3e0e493f4a1fb1ab61a",
  "tree": "8c671457b2c96672204365e226d0c0c0b90227f1",
  "parents": [
    "2c982b0c1f70665b7cb6036f97c57e290abb405c"
  ],
  "author": {
    "name": "Paul Berry",
    "email": "paulberry@google.com",
    "time": "Tue Feb 23 17:51:16 2021 +0000"
  },
  "committer": {
    "name": "commit-bot@chromium.org",
    "email": "commit-bot@chromium.org",
    "time": "Tue Feb 23 17:51:16 2021 +0000"
  },
  "message": "Flow analysis: expand analyzer support for \"why not promoted\" messages.\n\nThis CL adds support for the following scenarios to the analyzer:\n\n- Attempt to use a non-promoted nullable expression as the iterable of\n  a for-in loop\n\n- Attempt to use a non-promoted nullable expression as the argument of\n  a `yield *` statement\n\n- Attempt to implicitly invoke `.call` on a non-promoted nullable\n  expression\n\n- Attempt to use a non-promoted nullable expression as the argument of\n  a spread operator (`...`) that is not null-aware\n\nSome of these cases are already handled by the CFE.  Others will be\naddressed in a follow-up CL.\n\nChange-Id: I3cf31b1496e1bd92fdd3f8192f04c98dff15077c\nBug: https://github.com/dart-lang/sdk/issues/44898\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/186320\nReviewed-by: Brian Wilkerson \u003cbrianwilkerson@google.com\u003e\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4c0d40f898842e8505dc89300a3ad891927a8d1c",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/flow_analysis/why_not_promoted/data/for_in_loop_type_not_iterable_nullability_error.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b8e021a16df40dbb12b2c119243fc642a7d689a1",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/flow_analysis/why_not_promoted/data/invalid_assignment_error_nullability_error.dart"
    },
    {
      "type": "modify",
      "old_id": "c603deffc39452822b5b6ab98403034334262472",
      "old_mode": 33188,
      "old_path": "pkg/_fe_analyzer_shared/test/flow_analysis/why_not_promoted/data/nullable_expression_call_error.dart",
      "new_id": "3e3331643e41eb82644f137d4e8891310e1d6b8f",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/flow_analysis/why_not_promoted/data/nullable_expression_call_error.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d3f645150b25416300d6c9d75141d2402ebee2bf",
      "new_mode": 33188,
      "new_path": "pkg/_fe_analyzer_shared/test/flow_analysis/why_not_promoted/data/nullable_spread_error.dart"
    },
    {
      "type": "modify",
      "old_id": "1f89eb6f2bb37d846b9ea2e34d9d2bab2cbc20f2",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart",
      "new_id": "3775ad767b28dea619560636d89fe2301ab6b4f1",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart"
    },
    {
      "type": "modify",
      "old_id": "a85d35e1fdac8f3b4ceb1e1ec6034516824bae91",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart",
      "new_id": "c69fc95eada3340a5daa661bb24695d4cbd363ad",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "a97554033b33e787ba8ca2b698ae98dbfb9731e6",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart",
      "new_id": "e05d2ad80af69882e873008f8104e18cf7283e51",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "d6204de54a92f0c1285dd112661f3c4c43dbad42",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart",
      "new_id": "99b12771a617c261462e7122bcb9f6d8f7a52050",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "48816ecf8689e50463db66af0819f70690780495",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/error/nullable_dereference_verifier.dart",
      "new_id": "6044fab84cb45196245b019777bf10e5327018ea",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/error/nullable_dereference_verifier.dart"
    },
    {
      "type": "modify",
      "old_id": "1e34cb0d2082f9052e4bc941a227e69bbc8a9116",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/generated/resolver.dart",
      "new_id": "1411df87cf9b4085ad4024e259591600cb4eeca8",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/generated/resolver.dart"
    }
  ]
}
