)]}'
{
  "commit": "41e983db813a5af0122fd903694ccb9829df5bcf",
  "tree": "15cee85d8b35a5f43e802d3b2c682ffd44f490d9",
  "parents": [
    "acc4ee0b1e3fc94a25bdf24431e7567e20cc663d"
  ],
  "author": {
    "name": "Konstantin Shcheglov",
    "email": "scheglov@google.com",
    "time": "Fri Sep 05 12:19:26 2025 -0700"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Sep 05 12:19:26 2025 -0700"
  },
  "message": "Fine. Track hasNonFinalField in manifests and requirements.\n\nPersist and track `hasNonFinalField` for interface-like elements so\nfine- grained dependencies can invalidate precisely when a class (or its\nsupertypes) declares a non-final instance field.\n\nWhat’s changed\n- Store `hasNonFinalField` on manifest items for classes, enums,\n  extension types, and mixins. The flag is serialized/deserialized and\n  printed in dumps.\n- Add a tracked getter on `InterfaceElementImpl` that records a\n  dependency when `hasNonFinalField` is queried; use a private backing\n  field with a setter.\n- Extend requirements schema with an optional `hasNonFinalField` entry\n  and record it when requested.\n- Validate the requirement via a new\n  `InterfaceHasNonFinalFieldMismatch` failure.\n- Exclude `hasNonFinalField` from item identity matching; it is enforced\n  via requirements instead of forcing new IDs.\n- Bump `AnalysisDriver.DATA_VERSION` to 541 for the format change.\n\nWhy\n- Consumers that depend on mutability of instance fields (directly or\n  through inheritance) now get targeted invalidation without unnecessary\n  ID churn, improving both correctness and incremental performance.\n\nImplementation notes\n- LibraryManifestBuilder copies `element.hasNonFinalField` into item\n  instances.\n- Manifest read/write gains a boolean field on `InterfaceItem` (and\n  subclasses) and helpers to encode/decode optional booleans in the\n  requirements stream.\n- Result printer includes `hasNonFinalField` in interface requirement\n  dumps.\n\nChange-Id: Ib132dca582f77df87f995920dd9b73784a4eeefd\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/448444\nReviewed-by: Johnni Winther \u003cjohnniwinther@google.com\u003e\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "41286c5f834e415e2b7619fafcb7f962d49697d2",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/analysis/driver.dart",
      "new_id": "a5663bb272100ad564f4b67af2ddfe95a7e75e6f",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/analysis/driver.dart"
    },
    {
      "type": "modify",
      "old_id": "2283d0283e852ba21f2a00bbf158b44590c0cf65",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/element/element.dart",
      "new_id": "41bc464f1d258a9c304843fdfaced3825d394573",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/element/element.dart"
    },
    {
      "type": "modify",
      "old_id": "8ec6d00e52059614d5d20c1a64ea986b8f2dbb85",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/fine/library_manifest.dart",
      "new_id": "bf2ef160e53aeec133734c236ad495c94a57d9cc",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/fine/library_manifest.dart"
    },
    {
      "type": "modify",
      "old_id": "24fcbf42a015889f861aacd63131995760abacbe",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/fine/manifest_item.dart",
      "new_id": "ee5f9b14b824f06dab6f9a504d2155ecbf19dd58",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/fine/manifest_item.dart"
    },
    {
      "type": "modify",
      "old_id": "eb0b463d40811bcd8c2b4a991fd54b4ef8f06787",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/fine/requirement_failure.dart",
      "new_id": "f9b931a565f9fcdf35cb2fafdd6aeaeb0b7a94fa",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/fine/requirement_failure.dart"
    },
    {
      "type": "modify",
      "old_id": "5b8d7f1234655c6d2b3b7490729564d10cf1adf8",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/fine/requirements.dart",
      "new_id": "064400bdccf1e1877c35ce1dc364046359d4a8af",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/fine/requirements.dart"
    },
    {
      "type": "modify",
      "old_id": "c36cbe95d064f2606f2cd13f77eb3dff79789d79",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/test/src/dart/analysis/driver_test.dart",
      "new_id": "60e1c5bb01642a7fca09dba3c05c01e4af647e1d",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/test/src/dart/analysis/driver_test.dart"
    },
    {
      "type": "modify",
      "old_id": "fe09fe2d30a2c2692a9deb280f5b1ea20156df4b",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/test/src/dart/analysis/result_printer.dart",
      "new_id": "0b3c2d0d6344dc5676ca63e685a71ff968d0b266",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/test/src/dart/analysis/result_printer.dart"
    }
  ]
}
