)]}'
{
  "commit": "076dd1a2c07ef8a6d4312ce396e48a98cb77f4d0",
  "tree": "f39330d0d61db1b6d1d2cf59da280a366d24aef2",
  "parents": [
    "43df149accc022ef81227bdeaef9f6e82cf1aff2"
  ],
  "author": {
    "name": "Sam Rawlins",
    "email": "srawlins@google.com",
    "time": "Mon Sep 23 16:40:09 2024 +0000"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Sep 23 16:40:09 2024 +0000"
  },
  "message": "Lint rule: prefer_interpolation, consider flattened chains\n\nFixes https://github.com/dart-lang/linter/issues/3814\n\nThis CL ends up solving a few problems, all rooted to one issue: binary\nexpressions were considered as they live in the syntax tree, but as they\nare read by a human, they can be longer chains of additions.\n\n1. We reported `\u0027\u0027 + \u0027\u0027 + \u0027\u0027` even though adding two string literals is\n   considered OK. This is because the outer binary expression has\n   `\u0027\u0027 + \u0027\u0027` as its left operand, which isn\u0027t technically a string\n   literal. This over-reporting is corrected.\n2. Binary expressions inside string interpolations were not considered.\n   This corrects that.\n3. We can now report correctly the two issues in code like\n   `x + \u0027\u0027 + \u0027\u0027 + x`.\n\nChange-Id: If2a6fdf11d815d42d732cf2713b9e6dea3932e3d\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/385320\nReviewed-by: Brian Wilkerson \u003cbrianwilkerson@google.com\u003e\nCommit-Queue: Samuel Rawlins \u003csrawlins@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "acaea7c90d390ca623632736753820e7a01b33c2",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/tool/diagnostics/diagnostics.md",
      "new_id": "4c38437045fe7314878225283baf8fe7ad2d4703",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/tool/diagnostics/diagnostics.md"
    },
    {
      "type": "modify",
      "old_id": "236a18c649995201688ea2fc658ec095a62325ed",
      "old_mode": 33188,
      "old_path": "pkg/linter/lib/src/rules/prefer_interpolation_to_compose_strings.dart",
      "new_id": "9b0b89d5f59c097911e4a19e7e56f73e6b6dcd44",
      "new_mode": 33188,
      "new_path": "pkg/linter/lib/src/rules/prefer_interpolation_to_compose_strings.dart"
    },
    {
      "type": "modify",
      "old_id": "2df043d10bce0cd24d6e58c491289ac99352c532",
      "old_mode": 33188,
      "old_path": "pkg/linter/messages.yaml",
      "new_id": "1af3709b73bd24a7ac8c88506104d57ea2578c3b",
      "new_mode": 33188,
      "new_path": "pkg/linter/messages.yaml"
    },
    {
      "type": "modify",
      "old_id": "630f2f576a642a1d62f2ceacda4ee6dfd57449e2",
      "old_mode": 33188,
      "old_path": "pkg/linter/test/rules/prefer_interpolation_to_compose_strings_test.dart",
      "new_id": "e56b9c0769e9dbdc2904c77b2a55f798aebe53ff",
      "new_mode": 33188,
      "new_path": "pkg/linter/test/rules/prefer_interpolation_to_compose_strings_test.dart"
    }
  ]
}
