)]}'
{
  "commit": "7f6858fd09dccfefcffff3e042555ffa75409ab8",
  "tree": "f0826a6770d3a395874a1022d5439d0911b894f5",
  "parents": [
    "efdb3de4f2408075f165162aa16d65c2ed8b3fec"
  ],
  "author": {
    "name": "Jesung Yang",
    "email": "y.j3ms.n@gmail.com",
    "time": "Tue Dec 16 05:49:37 2025 +0000"
  },
  "committer": {
    "name": "Jesung Yang",
    "email": "y.j3ms.n@gmail.com",
    "time": "Thu Dec 18 01:27:43 2025 +0000"
  },
  "message": "feat: introduce `crate_attrs` field in `rust-project.json`\n\nSince the commit 50384460c68f\n(\"Rewrite method resolution to follow rustc more closely\"), the method\nresolution logic has changed: rust-analyzer only looks up inherent\nmethods for primitive types in sysroot crates.\n\nUnfortunately, this change broke at least one project that relies on\n`rust-project.json`: Rust-for-Linux. Its auto-generated\n`rust-project.json` directly embeds `core`, `alloc`, and `std` in the\n`crates` list without defining `sysroot_src`. Consequently,\nrust-analyzer fails to identify them as sysroot crates, breaking IDE\nsupport for primitive methods (e.g., `0_i32.rotate_left(0)`).\n\nHowever, specifying `sysroot_src` creates a new issue: it implicitly\nadds `std` as a dependency to all kernel module crates, which are\nactually compiled with `-Zcrate-attr\u003dno_std`. Since rust-analyzer cannot\nsee compiler flags passed outside of the project definition, we need a\nmethod to explicitly specify `#![no_std]` or, more generally,\ncrate-level attributes through the project configuration.\n\nTo resolve this, extend the `rust-project.json` format with a new\n`crate_attrs` field. This allows users to specify crate-level attributes\nsuch as `#![no_std]` directly into the configuration, enabling\nrust-analyzer to respect them when analyzing crates.\n\nReferences:\n- The original Zulip discussion:\n  https://rust-lang.zulipchat.com/#narrow/channel/185405-t-compiler.2Frust-analyzer/topic/Primitive.20type.20inherent.20method.20lookup.20fails/with/562983853\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "14649dde648ffa5557b91f3e86fe9e6419440039",
      "old_mode": 33188,
      "old_path": "crates/base-db/src/input.rs",
      "new_id": "240f1264917a0bd2c4063f2da1d910c039578cbf",
      "new_mode": 33188,
      "new_path": "crates/base-db/src/input.rs"
    },
    {
      "type": "modify",
      "old_id": "febc794b5a05f6679f19d024a68c5315fa49eae8",
      "old_mode": 33188,
      "old_path": "crates/hir-def/src/attrs.rs",
      "new_id": "34a9230794d18ae1e6108b41c7a9907fd1efe5ab",
      "new_mode": 33188,
      "new_path": "crates/hir-def/src/attrs.rs"
    },
    {
      "type": "modify",
      "old_id": "2a104fff2b92c367741f8bf69fe2c0ffbb24ddcb",
      "old_mode": 33188,
      "old_path": "crates/hir-def/src/item_tree.rs",
      "new_id": "6eab8888d92d9e7fd600d6f03afeafa196e8408a",
      "new_mode": 33188,
      "new_path": "crates/hir-def/src/item_tree.rs"
    },
    {
      "type": "modify",
      "old_id": "5c635a4b3831ca2f1104c692a29062d574155379",
      "old_mode": 33188,
      "old_path": "crates/hir-def/src/item_tree/attrs.rs",
      "new_id": "81a9b28b628ebfccf792a46b677d2d6c1093c65c",
      "new_mode": 33188,
      "new_path": "crates/hir-def/src/item_tree/attrs.rs"
    },
    {
      "type": "modify",
      "old_id": "a57432f33c3dc3e9ac08284d698189b3b2b3b43f",
      "old_mode": 33188,
      "old_path": "crates/hir-def/src/item_tree/tests.rs",
      "new_id": "1926ed74e869ec457796dca9b4c4331ae7d95596",
      "new_mode": 33188,
      "new_path": "crates/hir-def/src/item_tree/tests.rs"
    },
    {
      "type": "modify",
      "old_id": "08edf41c569472de73f2e0965c53beaa1d54216a",
      "old_mode": 33188,
      "old_path": "crates/hir-def/src/nameres/collector.rs",
      "new_id": "10581378bef97e5c555522d9cefd47cfce508df3",
      "new_mode": 33188,
      "new_path": "crates/hir-def/src/nameres/collector.rs"
    },
    {
      "type": "modify",
      "old_id": "57243346019f57d8dc32a5a8d263c425c9255343",
      "old_mode": 33188,
      "old_path": "crates/hir-def/src/nameres/tests/incremental.rs",
      "new_id": "225ba958634ebbaee01bf8c4b756d9dec87beb46",
      "new_mode": 33188,
      "new_path": "crates/hir-def/src/nameres/tests/incremental.rs"
    },
    {
      "type": "modify",
      "old_id": "80fac3512ece1e7e60efe50b2de734500418302a",
      "old_mode": 33188,
      "old_path": "crates/hir/src/semantics.rs",
      "new_id": "b65a24d61c6ef2dadd8e29225e7e2e11f2d2179b",
      "new_mode": 33188,
      "new_path": "crates/hir/src/semantics.rs"
    },
    {
      "type": "modify",
      "old_id": "b7ec8fa53fa72d6ece43632034712d73988bf858",
      "old_mode": 33188,
      "old_path": "crates/ide-diagnostics/src/handlers/unused_variables.rs",
      "new_id": "52a2f44fd0f8cbe1a95846e01d772d83c9187e08",
      "new_mode": 33188,
      "new_path": "crates/ide-diagnostics/src/handlers/unused_variables.rs"
    },
    {
      "type": "modify",
      "old_id": "2b8474c3163b72fa52b8a964013ed3300f65bf4c",
      "old_mode": 33188,
      "old_path": "crates/ide-diagnostics/src/lib.rs",
      "new_id": "0b321442497bd0aae43b172da8e29f99147dd68f",
      "new_mode": 33188,
      "new_path": "crates/ide-diagnostics/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "8594a0a224750276c0019a996857b07cbba6999c",
      "old_mode": 33188,
      "old_path": "crates/ide/src/doc_links/tests.rs",
      "new_id": "a61a6c677f6553c450942c5604940396aa2a753d",
      "new_mode": 33188,
      "new_path": "crates/ide/src/doc_links/tests.rs"
    },
    {
      "type": "modify",
      "old_id": "94362649043d71d0a62bce079b88e70798a26ee8",
      "old_mode": 33188,
      "old_path": "crates/ide/src/lib.rs",
      "new_id": "0066ceed21ed57aaf4fe998304c54dc06f0d72df",
      "new_mode": 33188,
      "new_path": "crates/ide/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "cfcd76d2aa3bda7fe6c37f28bacc060d8fb85373",
      "old_mode": 33188,
      "old_path": "crates/ide/src/status.rs",
      "new_id": "7f377e416b3226a1b37f6a3994550b27d1ddf8a5",
      "new_mode": 33188,
      "new_path": "crates/ide/src/status.rs"
    },
    {
      "type": "modify",
      "old_id": "041b9accf41d2ef9d415d9a4c385fdecaea11ae8",
      "old_mode": 33188,
      "old_path": "crates/project-model/src/project_json.rs",
      "new_id": "b3478d2cfe033502ccc2a0fd0c35bd56e662249b",
      "new_mode": 33188,
      "new_path": "crates/project-model/src/project_json.rs"
    },
    {
      "type": "modify",
      "old_id": "1908fc02904a8b15568cacc97a6cbbeb45e5d301",
      "old_mode": 33188,
      "old_path": "crates/project-model/src/tests.rs",
      "new_id": "a03ed562e1be5527580795fd083040ca70926194",
      "new_mode": 33188,
      "new_path": "crates/project-model/src/tests.rs"
    },
    {
      "type": "modify",
      "old_id": "747aa68f082d398036380234cc1e75c749ae6021",
      "old_mode": 33188,
      "old_path": "crates/project-model/src/workspace.rs",
      "new_id": "fa3a79e041e0f7b05f3af12eb3d6be27948a89c4",
      "new_mode": 33188,
      "new_path": "crates/project-model/src/workspace.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b2a7e371501712e096ef245d96f5ee1a9f3f5fd2",
      "new_mode": 33188,
      "new_path": "crates/project-model/test_data/crate-attrs.json"
    },
    {
      "type": "modify",
      "old_id": "4f6ce4dc953748f0a3dca2019edb679ece8418fa",
      "old_mode": 33188,
      "old_path": "crates/project-model/test_data/output/cargo_hello_world_project_model.txt",
      "new_id": "a895ef53afa06551d50612f07b3fbdc51ba77bf4",
      "new_mode": 33188,
      "new_path": "crates/project-model/test_data/output/cargo_hello_world_project_model.txt"
    },
    {
      "type": "modify",
      "old_id": "4f6ce4dc953748f0a3dca2019edb679ece8418fa",
      "old_mode": 33188,
      "old_path": "crates/project-model/test_data/output/cargo_hello_world_project_model_with_selective_overrides.txt",
      "new_id": "a895ef53afa06551d50612f07b3fbdc51ba77bf4",
      "new_mode": 33188,
      "new_path": "crates/project-model/test_data/output/cargo_hello_world_project_model_with_selective_overrides.txt"
    },
    {
      "type": "modify",
      "old_id": "6862918e09ae602a0722dff720d2f3d79284ab1f",
      "old_mode": 33188,
      "old_path": "crates/project-model/test_data/output/cargo_hello_world_project_model_with_wildcard_overrides.txt",
      "new_id": "9eb47947b6fd5a9e9d6e13047f73031279002652",
      "new_mode": 33188,
      "new_path": "crates/project-model/test_data/output/cargo_hello_world_project_model_with_wildcard_overrides.txt"
    },
    {
      "type": "modify",
      "old_id": "28ad3236ae81370fac24ac31ee554b9ec7f51973",
      "old_mode": 33188,
      "old_path": "crates/project-model/test_data/output/rust_project_cfg_groups.txt",
      "new_id": "32f9206a3e16736ec0a66555ced21349a7b6950a",
      "new_mode": 33188,
      "new_path": "crates/project-model/test_data/output/rust_project_cfg_groups.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "21b484bc0c42348fc42ff8c78fb535e3b93c7a9d",
      "new_mode": 33188,
      "new_path": "crates/project-model/test_data/output/rust_project_crate_attrs.txt"
    },
    {
      "type": "modify",
      "old_id": "dabb3aa674414a3596ebc8b0b7036024e07613f0",
      "old_mode": 33188,
      "old_path": "crates/project-model/test_data/output/rust_project_hello_world_project_model.txt",
      "new_id": "de793115b9d525a75f052f679002f117bdbba800",
      "new_mode": 33188,
      "new_path": "crates/project-model/test_data/output/rust_project_hello_world_project_model.txt"
    },
    {
      "type": "modify",
      "old_id": "5e8b250c24a076f255a6dd7983e5eea281d88a48",
      "old_mode": 33188,
      "old_path": "crates/test-fixture/src/lib.rs",
      "new_id": "01e4215cfb86824a6d21df58eca0e259a72bc286",
      "new_mode": 33188,
      "new_path": "crates/test-fixture/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "831d2b30c1b65585081c3239ca032fb5ea2c4601",
      "old_mode": 33188,
      "old_path": "crates/test-utils/src/fixture.rs",
      "new_id": "1f6262c897c7f0847a901a3e082e796703606b5b",
      "new_mode": 33188,
      "new_path": "crates/test-utils/src/fixture.rs"
    },
    {
      "type": "modify",
      "old_id": "74489a9046ba3a3db185a2e63ee0bf7526ccea75",
      "old_mode": 33188,
      "old_path": "docs/book/src/non_cargo_based_projects.md",
      "new_id": "e7df4a5d76685e68600bbdf8bcf60deb6604eb6d",
      "new_mode": 33188,
      "new_path": "docs/book/src/non_cargo_based_projects.md"
    }
  ]
}
