)]}'
{
  "commit": "5a1b669c0ec2d7dd81751932469ac442e3dfc8d5",
  "tree": "a53e14085a6ca74a56d2ab8e85f9e83cafc3e0a5",
  "parents": [
    "3e4f56bdecac68443e37df22965ce47d6b0bd113"
  ],
  "author": {
    "name": "Krisitan Erik Olsen",
    "email": "kristian.erik@outlook.com",
    "time": "Thu Jul 09 12:58:54 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jul 09 16:58:54 2026 -0300"
  },
  "message": "[clang] Fix crash in DiagnoseMissingSemiAfterTagDefinition for annot_template_id (#208119)\n\nDiagnoseMissingSemiAfterTagDefinition checks whether the token after a\ntag definition could be a scope specifier before calling\nTryAnnotateCXXScopeToken. It accepted annot_template_id unconditionally,\nbut TryAnnotateCXXScopeToken asserts that MightBeCXXScopeToken() holds,\nwhich only accepts annot_template_id when followed by ::.\n\nWhen the token is annot_template_id not followed by :: (e.g. union { }\n::foo\u003cint\u003e; where ::foo\u003cint\u003e is annotated as a template-id after a\nmissing semicolon), the check passes but MightBeCXXScopeToken() returns\nfalse, firing the assertion.\n\nThis patch adds the same NextToken().is(tok::coloncolon) guard that\nMightBeCXXScopeToken uses for annot_template_id.\n\nFixes #207992\n\n---------\n\nCo-authored-by: Corentin Jabot \u003ccorentinjabot@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "696aed167e6211a8db8392e3a850b0f70a94c9ed",
      "old_mode": 33188,
      "old_path": "clang/docs/ReleaseNotes.md",
      "new_id": "dd63b4e5555d48b8c392cfe3ddbfd2f9c3e7b784",
      "new_mode": 33188,
      "new_path": "clang/docs/ReleaseNotes.md"
    },
    {
      "type": "modify",
      "old_id": "3f41e7c5c6f0de9bb557cfe4cf48fcae8e450997",
      "old_mode": 33188,
      "old_path": "clang/lib/Parse/ParseDecl.cpp",
      "new_id": "7326ba781184cd930f6ecb61385e83f0dff119fc",
      "new_mode": 33188,
      "new_path": "clang/lib/Parse/ParseDecl.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bed8a2633a6188b6fbee9f8745bd99b0010c9100",
      "new_mode": 33188,
      "new_path": "clang/test/Parser/cxx-missing-semi-crash.cpp"
    }
  ]
}
