)]}'
{
  "commit": "203d14e9ae2bebc8d8ba2241b537ffad40ad4a9f",
  "tree": "840441c885996a415f0018e45dd4a3a393678c1d",
  "parents": [
    "657d2c945c6e5518ace546ff70803155e9b45f31"
  ],
  "author": {
    "name": "Alexander Markov",
    "email": "alexmarkov@google.com",
    "time": "Sat Nov 19 17:26:27 2022 +0000"
  },
  "committer": {
    "name": "Alexander Markov",
    "email": "alexmarkov@google.com",
    "time": "Sat Nov 19 17:26:27 2022 +0000"
  },
  "message": "[stable] [vm/aot/tfa] Fix handling of type parameter nullability in factory constructors\n\nTFA represents type parameters inside factory constructors as\nadditional parameters. In a summary, type parameter type is represented\nsimply as a reference to a parameter. This approach ignores\nnullability of a type parameter type, which is not correct.\n\nThis change add a new ApplyNullability operation to a summary in order\nto apply any extra nullability (\u0027?\u0027 or \u0027*\u0027) on top of the type argument\npassed to a factory constructor.\n\nTEST\u003dpkg/vm/testcases/transformations/type_flow/transformer/regress_50392_nnbd_strong.dart\nFixes https://github.com/dart-lang/sdk/issues/50392\n\nCherry-pick: https://dart-review.googlesource.com/c/sdk/+/268381\nChange-Id: I74080813663fbb7176ad30c0daf9f75de087506b\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/268500\nReviewed-by: Siva Annamalai \u003casiva@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a30913884c91f6942547b99dd5d54e422c898b52",
      "old_mode": 33188,
      "old_path": "pkg/vm/lib/transformations/type_flow/summary.dart",
      "new_id": "a34bb59e6872e1c168652a19ee303237e1c6e10f",
      "new_mode": 33188,
      "new_path": "pkg/vm/lib/transformations/type_flow/summary.dart"
    },
    {
      "type": "modify",
      "old_id": "6bd276810a76c18e66a0004a69577f8943ff3807",
      "old_mode": 33188,
      "old_path": "pkg/vm/lib/transformations/type_flow/summary_collector.dart",
      "new_id": "14502505a3a9be316e515791741a57be083af8e1",
      "new_mode": 33188,
      "new_path": "pkg/vm/lib/transformations/type_flow/summary_collector.dart"
    },
    {
      "type": "modify",
      "old_id": "6db75a771bf36cf39d91291bb6672cfa3dd5fd08",
      "old_mode": 33188,
      "old_path": "pkg/vm/lib/transformations/type_flow/types.dart",
      "new_id": "19ad3ec1de11818ce6517ed5b9a89b3ef6d95119",
      "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": "dc7478bf5630484763c4bfa4b538ced05b21c55c",
      "new_mode": 33188,
      "new_path": "pkg/vm/testcases/transformations/type_flow/transformer/regress_50392_nnbd_strong.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8c85b522b6b10fddeed7094da8aa2e70242d99bc",
      "new_mode": 33188,
      "new_path": "pkg/vm/testcases/transformations/type_flow/transformer/regress_50392_nnbd_strong.dart.expect"
    }
  ]
}
