)]}'
{
  "commit": "21f918cbaf2d65d2bdbf7db01f2dbc4738d28cdc",
  "tree": "ab207467c8999a77e76ef80e1dcc303a73120dc3",
  "parents": [
    "859220648edee0282af5b56f0b490cd4beb074db"
  ],
  "author": {
    "name": "Esteban Küber",
    "email": "esteban@kuber.com.ar",
    "time": "Sun Mar 15 01:23:27 2026 +0000"
  },
  "committer": {
    "name": "Esteban Küber",
    "email": "esteban@kuber.com.ar",
    "time": "Mon Oct 26 19:15:28 2026 +0000"
  },
  "message": "Lex lifetimes using emoji and emit appropriate error\n\nLex and parse emoji in lifetimes, and disallow them in the parser with a hard error. Allow emoji to start a lifetime name even if they are not XID_Start.\n\n```\nerror: lifetimes cannot contain emoji\n  --\u003e $DIR/emoji-in-lifetime.rs:1:22\n   |\nLL | fn bad_lifetime_name\u003c\u0027🐛🐛🐛family👨👩👧👦\u003e(\n   |                      ^^^^^^^^^^^^^^^^^^^^^\n```\n\nUnify lifetime and identifier parsing. Use `bad_unicode_identifiers` for lifetimes.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "41c82c989becc4cbf0ecaa71c9fcbe845452588f",
      "old_mode": 33188,
      "old_path": "Cargo.lock",
      "new_id": "5ff455c57f056a4fdbb1a2435af876f6513f2a1e",
      "new_mode": 33188,
      "new_path": "Cargo.lock"
    },
    {
      "type": "modify",
      "old_id": "043b7ad59d0a83c9dcff0102c5d1f4b14996a1b1",
      "old_mode": 33188,
      "old_path": "compiler/rustc_lexer/src/lib.rs",
      "new_id": "0aa57e75889fa2d81deb1ec8bf5480b1c930fff1",
      "new_mode": 33188,
      "new_path": "compiler/rustc_lexer/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "9650742628f73bc83842f205c08ba8e2d2d52090",
      "old_mode": 33188,
      "old_path": "compiler/rustc_parse/Cargo.toml",
      "new_id": "b54438384a215944635ecec4e0d0976cb53a8d42",
      "new_mode": 33188,
      "new_path": "compiler/rustc_parse/Cargo.toml"
    },
    {
      "type": "modify",
      "old_id": "03d5634fc359cd217a74a88fb5c83d87f56e95ac",
      "old_mode": 33188,
      "old_path": "compiler/rustc_parse/src/lexer/mod.rs",
      "new_id": "13bda08fe8096758e6b7eb570957a0811bea87a3",
      "new_mode": 33188,
      "new_path": "compiler/rustc_parse/src/lexer/mod.rs"
    },
    {
      "type": "modify",
      "old_id": "f449809911c90894197750f003d48a59d779ea1c",
      "old_mode": 33188,
      "old_path": "src/tools/rust-analyzer/crates/parser/src/lexed_str.rs",
      "new_id": "9b9437740923c11525403f112f3815c74ff40955",
      "new_mode": 33188,
      "new_path": "src/tools/rust-analyzer/crates/parser/src/lexed_str.rs"
    },
    {
      "type": "modify",
      "old_id": "e919bf2a4aef2a86d9b9dfd0ff5f8e84ab135408",
      "old_mode": 33188,
      "old_path": "src/tools/rust-analyzer/crates/parser/test_data/lexer/err/lifetime_starts_with_a_number.rast",
      "new_id": "b2bf087e749f3eb77394153ecdb7eeb64a7aec57",
      "new_mode": 33188,
      "new_path": "src/tools/rust-analyzer/crates/parser/test_data/lexer/err/lifetime_starts_with_a_number.rast"
    },
    {
      "type": "modify",
      "old_id": "e919bf2a4aef2a86d9b9dfd0ff5f8e84ab135408",
      "old_mode": 33188,
      "old_path": "src/tools/rust-analyzer/crates/parser/test_data/lexer/err/lifetime_starts_with_a_number.txt",
      "new_id": "b2bf087e749f3eb77394153ecdb7eeb64a7aec57",
      "new_mode": 33188,
      "new_path": "src/tools/rust-analyzer/crates/parser/test_data/lexer/err/lifetime_starts_with_a_number.txt"
    },
    {
      "type": "modify",
      "old_id": "56f19cce0784e07afb4dad163a27631a6133bfa9",
      "old_mode": 33188,
      "old_path": "src/tools/rust-analyzer/crates/parser/test_data/lexer/err/unclosed_char_with_ferris.rast",
      "new_id": "6ace31f434ef22ce5a467a4ece458b7be2c49b1f",
      "new_mode": 33188,
      "new_path": "src/tools/rust-analyzer/crates/parser/test_data/lexer/err/unclosed_char_with_ferris.rast"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e4a12f332ae70caea62eb80fca256eaaf719f016",
      "new_mode": 33188,
      "new_path": "tests/ui/lexer/emoji-in-lifetime.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e205639a9a3c38cf8def9756dfdc79768e0889d",
      "new_mode": 33188,
      "new_path": "tests/ui/lexer/emoji-in-lifetime.stderr"
    },
    {
      "type": "modify",
      "old_id": "81ee697802b9cf44912cb0eaab0bf0eccccf52c3",
      "old_mode": 33188,
      "old_path": "tests/ui/lexer/lex-bad-str-literal-as-char-1.stderr",
      "new_id": "7503774cd686fcea85b7119d981127c8f9944053",
      "new_mode": 33188,
      "new_path": "tests/ui/lexer/lex-bad-str-literal-as-char-1.stderr"
    },
    {
      "type": "modify",
      "old_id": "7c1bcb7263171d9b0d06d98feef52bae6501593f",
      "old_mode": 33188,
      "old_path": "tests/ui/parser/numeric-lifetime.stderr",
      "new_id": "46b06ae7dc3cbb9204f6f76a0126b8b11c717c60",
      "new_mode": 33188,
      "new_path": "tests/ui/parser/numeric-lifetime.stderr"
    }
  ]
}
