)]}'
{
  "commit": "03fd2aaa4eae56cfcfc9d0bcd0ca9f3d5946ca18",
  "tree": "43a2b0bbd5cddafaa82abd5f826131e8f9781809",
  "parents": [
    "f0234832d19ae270a2b5293ffc4103d738a982a0"
  ],
  "author": {
    "name": "Paul Berry",
    "email": "paulberry@google.com",
    "time": "Mon Jan 06 14:39:23 2025 -0800"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Jan 06 14:39:23 2025 -0800"
  },
  "message": "[analyzer] Use AstNodeImpl when interfacing with shared code\n\nChange the analyzer\u0027s use of the following generic types so that it\nsupplies the type parameter `AstNodeImpl` instead of `AstNode` as the\ntype it uses to represent AST nodes:\n\n- `AssignedVariables`\n- `AssignedVariablesForTesting`\n- `CaseHeadOrDefaultInfo`\n- `FlowAnalysis`\n- `MatchContext`\n- `SwitchExpressionMemberInfo`\n- `SwitchStatementMemberInfo`\n- `TypeAnalyzer`\n- `TypeAnalyzerErrors`\n\nIn some places I was able to avoid adding casts by changing method\nparameters to accept concrete AST node types instead of abstract\npublic interface types. This required adding the `covariant` keyword\nto one method (`ResolverVisitor.visitTryStatement`).\n\nThis is part of a larger arc of work to change the analyzer\u0027s use of\nthe shared code so that the type parameters it supplies are not part\nof the analyzer public API. See\nhttps://github.com/dart-lang/sdk/issues/59763.\n\nChange-Id: I98a6df704b64ff3efd3c73d05fb47409828fbf04\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/403281\nReviewed-by: Konstantin Shcheglov \u003cscheglov@google.com\u003e\nCommit-Queue: Paul Berry \u003cpaulberry@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a9a11e2c9856c97273c66d3c133d44399604c5f3",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart",
      "new_id": "b116388487200586ceb6198b48741c3cb2a3f5d4",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart"
    },
    {
      "type": "modify",
      "old_id": "aaf736ce2b79978fa55ebc338823d395377e8d22",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/for_resolver.dart",
      "new_id": "4c4bf74809161f0914886b92921ef093e1cb7d59",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/for_resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "e8f47fa6248f65115211a0e04b7fd9826c0854d9",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/resolver/shared_type_analyzer.dart",
      "new_id": "a7b457a14898781ccc8d1e065598496d25a6b090",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/resolver/shared_type_analyzer.dart"
    },
    {
      "type": "modify",
      "old_id": "f1b19499b67dcb77a0cf64b5fd5b840c5af8a56f",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/generated/resolver.dart",
      "new_id": "5149e927c913315f3cd495a1e9c2a67c566441e4",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/generated/resolver.dart"
    }
  ]
}
