about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2025-03-15 16:56:41 +0100
committerLukas Wirth <lukastw97@gmail.com>2025-03-16 10:24:15 +0100
commitccecb291cb85fceea643883305dab4fb16eadb6f (patch)
tree94447074f40775bf4346268cbad7397cfd423645 /src
parentfcd6e9418627f9eed2d08d0855b88904c08a2f83 (diff)
downloadrust-ccecb291cb85fceea643883305dab4fb16eadb6f.tar.gz
rust-ccecb291cb85fceea643883305dab4fb16eadb6f.zip
refactor: Remove `CrateGraphBuilder::iter_mut`
Diffstat (limited to 'src')
-rw-r--r--src/tools/rust-analyzer/crates/base-db/src/input.rs7
-rw-r--r--src/tools/rust-analyzer/crates/cfg/src/lib.rs2
-rw-r--r--src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs8
-rw-r--r--src/tools/rust-analyzer/crates/project-model/src/sysroot.rs2
-rw-r--r--src/tools/rust-analyzer/crates/project-model/src/tests.rs32
-rw-r--r--src/tools/rust-analyzer/crates/project-model/src/workspace.rs76
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/alloc/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/core/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/panic_abort/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/panic_unwind/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/proc_macro/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/profiler_builtins/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/std/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/stdarch/crates/std_detect/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/term/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/test/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/unwind/src/lib.rs0
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model.txt30
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model_with_selective_overrides.txt30
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model_with_wildcard_overrides.txt30
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/output/rust_project_cfg_groups.txt601
-rw-r--r--src/tools/rust-analyzer/crates/project-model/test_data/output/rust_project_hello_world_project_model.txt554
22 files changed, 75 insertions, 1297 deletions
diff --git a/src/tools/rust-analyzer/crates/base-db/src/input.rs b/src/tools/rust-analyzer/crates/base-db/src/input.rs
index 564697facf6..3d940608237 100644
--- a/src/tools/rust-analyzer/crates/base-db/src/input.rs
+++ b/src/tools/rust-analyzer/crates/base-db/src/input.rs
@@ -311,6 +311,7 @@ pub struct CrateData<Id> {
 pub type CrateDataBuilder = CrateData<CrateBuilderId>;
 pub type BuiltCrateData = CrateData<Crate>;
 
+/// Crate data unrelated to analysis.
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub struct ExtraCrateData {
     pub version: Option<String>,
@@ -601,12 +602,6 @@ impl CrateGraphBuilder {
         self.arena.iter().map(|(idx, _)| idx)
     }
 
-    // FIXME: used for fixing up the toolchain sysroot, should be removed and done differently
-    #[doc(hidden)]
-    pub fn iter_mut(&mut self) -> impl Iterator<Item = (CrateBuilderId, &mut CrateBuilder)> + '_ {
-        self.arena.iter_mut()
-    }
-
     /// Returns an iterator over all transitive dependencies of the given crate,
     /// including the crate itself.
     pub fn transitive_deps(&self, of: CrateBuilderId) -> impl Iterator<Item = CrateBuilderId> {
diff --git a/src/tools/rust-analyzer/crates/cfg/src/lib.rs b/src/tools/rust-analyzer/crates/cfg/src/lib.rs
index 8218a815560..86a7ea99007 100644
--- a/src/tools/rust-analyzer/crates/cfg/src/lib.rs
+++ b/src/tools/rust-analyzer/crates/cfg/src/lib.rs
@@ -264,7 +264,7 @@ impl fmt::Display for InactiveReason {
 }
 
 /// A `CfgOptions` that implements `Hash`, for the sake of hashing only.
-#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
 pub struct HashableCfgOptions {
     _enabled: Box<[CfgAtom]>,
 }
diff --git a/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs b/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs
index 054312835a8..617c4116a6e 100644
--- a/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs
+++ b/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs
@@ -35,6 +35,8 @@ pub struct CargoWorkspace {
     target_directory: AbsPathBuf,
     manifest_path: ManifestPath,
     is_virtual_workspace: bool,
+    /// Whether this workspace represents the sysroot workspace.
+    is_sysroot: bool,
     /// Environment variables set in the `.cargo/config` file.
     config_env: Env,
 }
@@ -418,6 +420,7 @@ impl CargoWorkspace {
         mut meta: cargo_metadata::Metadata,
         ws_manifest_path: ManifestPath,
         cargo_config_env: Env,
+        is_sysroot: bool,
     ) -> CargoWorkspace {
         let mut pkg_by_id = FxHashMap::default();
         let mut packages = Arena::default();
@@ -539,6 +542,7 @@ impl CargoWorkspace {
             target_directory,
             manifest_path: ws_manifest_path,
             is_virtual_workspace,
+            is_sysroot,
             config_env: cargo_config_env,
         }
     }
@@ -632,4 +636,8 @@ impl CargoWorkspace {
     pub fn env(&self) -> &Env {
         &self.config_env
     }
+
+    pub fn is_sysroot(&self) -> bool {
+        self.is_sysroot
+    }
 }
diff --git a/src/tools/rust-analyzer/crates/project-model/src/sysroot.rs b/src/tools/rust-analyzer/crates/project-model/src/sysroot.rs
index c92dc9f6a67..7e8db8d39dd 100644
--- a/src/tools/rust-analyzer/crates/project-model/src/sysroot.rs
+++ b/src/tools/rust-analyzer/crates/project-model/src/sysroot.rs
@@ -360,7 +360,7 @@ impl Sysroot {
             res.packages.remove(idx);
         });
 
-        let cargo_workspace = CargoWorkspace::new(res, library_manifest, Default::default());
+        let cargo_workspace = CargoWorkspace::new(res, library_manifest, Default::default(), true);
         Some(RustLibSrcWorkspace::Workspace(cargo_workspace))
     }
 }
diff --git a/src/tools/rust-analyzer/crates/project-model/src/tests.rs b/src/tools/rust-analyzer/crates/project-model/src/tests.rs
index ef7b3340644..1faa7b81e43 100644
--- a/src/tools/rust-analyzer/crates/project-model/src/tests.rs
+++ b/src/tools/rust-analyzer/crates/project-model/src/tests.rs
@@ -33,7 +33,7 @@ fn load_workspace_from_metadata(file: &str) -> ProjectWorkspace {
     let meta: Metadata = get_test_json_file(file);
     let manifest_path =
         ManifestPath::try_from(AbsPathBuf::try_from(meta.workspace_root.clone()).unwrap()).unwrap();
-    let cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default());
+    let cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default(), false);
     ProjectWorkspace {
         kind: ProjectWorkspaceKind::Cargo {
             cargo: cargo_workspace,
@@ -54,7 +54,7 @@ fn load_workspace_from_metadata(file: &str) -> ProjectWorkspace {
 fn load_rust_project(file: &str) -> (CrateGraphBuilder, ProcMacroPaths) {
     let data = get_test_json_file(file);
     let project = rooted_project_json(data);
-    let sysroot = get_fake_sysroot();
+    let sysroot = Sysroot::empty();
     let project_workspace = ProjectWorkspace {
         kind: ProjectWorkspaceKind::Json(project),
         sysroot,
@@ -101,36 +101,11 @@ fn replace_root(s: &mut String, direction: bool) {
     }
 }
 
-fn replace_fake_sys_root(s: &mut String) {
-    let fake_sysroot_path = get_test_path("fake-sysroot");
-    let fake_sysroot_path = if cfg!(windows) {
-        let normalized_path = fake_sysroot_path.as_str().replace('\\', r#"\\"#);
-        format!(r#"{normalized_path}\\"#)
-    } else {
-        format!("{}/", fake_sysroot_path.as_str())
-    };
-    *s = s.replace(&fake_sysroot_path, "$FAKESYSROOT$")
-}
-
 fn get_test_path(file: &str) -> Utf8PathBuf {
     let base = Utf8PathBuf::from(env!("CARGO_MANIFEST_DIR"));
     base.join("test_data").join(file)
 }
 
-fn get_fake_sysroot() -> Sysroot {
-    let sysroot_path = get_test_path("fake-sysroot");
-    // there's no `libexec/` directory with a `proc-macro-srv` binary in that
-    // fake sysroot, so we give them both the same path:
-    let sysroot_dir = AbsPathBuf::assert(sysroot_path);
-    let sysroot_src_dir = sysroot_dir.clone();
-    let mut sysroot = Sysroot::new(Some(sysroot_dir), Some(sysroot_src_dir));
-    let loaded_sysroot = sysroot.load_workspace(&RustSourceWorkspaceConfig::default_cargo());
-    if let Some(loaded_sysroot) = loaded_sysroot {
-        sysroot.set_workspace(loaded_sysroot);
-    }
-    sysroot
-}
-
 fn rooted_project_json(data: ProjectJsonData) -> ProjectJson {
     let mut root = "$ROOT$".to_owned();
     replace_root(&mut root, true);
@@ -159,7 +134,6 @@ fn check_crate_graph(crate_graph: CrateGraphBuilder, expect: ExpectFile) {
 
     replace_root(&mut crate_graph, false);
     replace_cargo(&mut crate_graph);
-    replace_fake_sys_root(&mut crate_graph);
     expect.assert_eq(&crate_graph);
 }
 
@@ -256,7 +230,7 @@ fn smoke_test_real_sysroot_cargo() {
     let meta: Metadata = get_test_json_file("hello-world-metadata.json");
     let manifest_path =
         ManifestPath::try_from(AbsPathBuf::try_from(meta.workspace_root.clone()).unwrap()).unwrap();
-    let cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default());
+    let cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default(), false);
     let mut sysroot = Sysroot::discover(
         AbsPath::assert(Utf8Path::new(env!("CARGO_MANIFEST_DIR"))),
         &Default::default(),
diff --git a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs
index 632e7b76896..f7bb875e65c 100644
--- a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs
+++ b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs
@@ -305,8 +305,12 @@ impl ProjectWorkspace {
                         &|_| (),
                     ) {
                         Ok((meta, _error)) => {
-                            let workspace =
-                                CargoWorkspace::new(meta, cargo_toml.clone(), Env::default());
+                            let workspace = CargoWorkspace::new(
+                                meta,
+                                cargo_toml.clone(),
+                                Env::default(),
+                                false,
+                            );
                             let build_scripts = WorkspaceBuildScripts::rustc_crates(
                                 &workspace,
                                 workspace_dir,
@@ -321,8 +325,8 @@ impl ProjectWorkspace {
                                 "Failed to read Cargo metadata from rustc source at {rustc_dir}",
                             );
                             Err(Some(format!(
-                            "Failed to read Cargo metadata from rustc source at {rustc_dir}: {e}"
-                        )))
+                                "Failed to read Cargo metadata from rustc source at {rustc_dir}: {e}"
+                            )))
                         }
                     }
                 })
@@ -379,7 +383,7 @@ impl ProjectWorkspace {
                 "Failed to read Cargo metadata from Cargo.toml file {cargo_toml}, {toolchain:?}",
             )
         })?;
-        let cargo = CargoWorkspace::new(meta, cargo_toml.clone(), cargo_config_extra_env);
+        let cargo = CargoWorkspace::new(meta, cargo_toml.clone(), cargo_config_extra_env, false);
         if let Some(loaded_sysroot) = loaded_sysroot {
             sysroot.set_workspace(loaded_sysroot);
         }
@@ -515,7 +519,7 @@ impl ProjectWorkspace {
             let cargo_config_extra_env =
                 cargo_config_env(detached_file, &config.extra_env, &sysroot);
             (
-                CargoWorkspace::new(ws, detached_file.clone(), cargo_config_extra_env),
+                CargoWorkspace::new(ws, detached_file.clone(), cargo_config_extra_env, false),
                 WorkspaceBuildScripts::default(),
                 error.map(Arc::new),
             )
@@ -866,6 +870,7 @@ impl ProjectWorkspace {
                 extra_env,
                 cfg_overrides,
                 self.set_test,
+                false,
                 crate_ws_data,
             ),
             ProjectWorkspaceKind::Cargo { cargo, rustc, build_scripts, error: _ } => {
@@ -968,6 +973,7 @@ fn project_json_to_crate_graph(
     extra_env: &FxHashMap<String, String>,
     override_cfg: &CfgOverrides,
     set_test: bool,
+    is_sysroot: bool,
     crate_ws_data: Arc<CrateWorkspaceData>,
 ) -> (CrateGraphBuilder, ProcMacroPaths) {
     let mut res = (CrateGraphBuilder::default(), ProcMacroPaths::default());
@@ -1023,7 +1029,7 @@ fn project_json_to_crate_graph(
                         target_cfgs.iter().chain(cfg.iter()).cloned().collect();
 
                     if *is_workspace_member {
-                        if set_test {
+                        if set_test && !is_sysroot {
                             // Add test cfg for local crates
                             cfg_options.insert_atom(sym::test.clone());
                         }
@@ -1049,9 +1055,13 @@ fn project_json_to_crate_graph(
                     None,
                     env,
                     if let Some(name) = display_name.clone() {
-                        CrateOrigin::Local {
-                            repo: repository.clone(),
-                            name: Some(name.canonical_name().to_owned()),
+                        if is_sysroot {
+                            CrateOrigin::Lang(LangCrateOrigin::from(name.canonical_name().as_str()))
+                        } else {
+                            CrateOrigin::Local {
+                                repo: repository.clone(),
+                                name: Some(name.canonical_name().to_owned()),
+                            }
                         }
                     } else {
                         CrateOrigin::Local { repo: None, name: None }
@@ -1119,7 +1129,6 @@ fn cargo_to_crate_graph(
         sysroot,
         rustc_cfg.clone(),
         load,
-        // FIXME: This looks incorrect but I don't think this causes problems.
         crate_ws_data.clone(),
     );
 
@@ -1139,7 +1148,7 @@ fn cargo_to_crate_graph(
             let mut cfg_options = cfg_options.clone();
 
             if cargo[pkg].is_local {
-                if set_test {
+                if set_test && !cargo.is_sysroot() {
                     // Add test cfg for local crates
                     cfg_options.insert_atom(sym::test.clone());
                 }
@@ -1152,7 +1161,9 @@ fn cargo_to_crate_graph(
 
         let mut lib_tgt = None;
         for &tgt in cargo[pkg].targets.iter() {
-            if !matches!(cargo[tgt].kind, TargetKind::Lib { .. }) && !cargo[pkg].is_member {
+            if !matches!(cargo[tgt].kind, TargetKind::Lib { .. })
+                && (!cargo[pkg].is_member || cargo.is_sysroot())
+            {
                 // For non-workspace-members, Cargo does not resolve dev-dependencies, so we don't
                 // add any targets except the library target, since those will not work correctly if
                 // they use dev-dependencies.
@@ -1177,9 +1188,13 @@ fn cargo_to_crate_graph(
                 name,
                 kind,
                 if pkg_data.is_local {
-                    CrateOrigin::Local {
-                        repo: pkg_data.repository.clone(),
-                        name: Some(Symbol::intern(&pkg_data.name)),
+                    if cargo.is_sysroot() {
+                        CrateOrigin::Lang(LangCrateOrigin::from(&*pkg_data.name))
+                    } else {
+                        CrateOrigin::Local {
+                            repo: pkg_data.repository.clone(),
+                            name: Some(Symbol::intern(&pkg_data.name)),
+                        }
                     }
                 } else {
                     CrateOrigin::Library {
@@ -1516,10 +1531,8 @@ fn add_target_crate_root(
         env,
         origin,
         matches!(kind, TargetKind::Lib { is_proc_macro: true }),
-        Some(if pkg.is_member {
-            cargo.workspace_root().to_path_buf()
-        } else {
-            pkg.manifest.parent().to_path_buf()
+        matches!(kind, TargetKind::Lib { is_proc_macro: true }).then(|| {
+            if pkg.is_member { cargo.workspace_root() } else { pkg.manifest.parent() }.to_path_buf()
         }),
         crate_ws_data,
     );
@@ -1561,16 +1574,8 @@ fn extend_crate_graph_with_sysroot(
 ) -> (SysrootPublicDeps, Option<CrateBuilderId>) {
     let mut pub_deps = vec![];
     let mut libproc_macro = None;
-    let diff = CfgDiff::new(vec![], vec![CfgAtom::Flag(sym::test.clone())]);
-    for (cid, c) in sysroot_crate_graph.iter_mut() {
-        // uninject `test` flag so `core` keeps working.
-        Arc::make_mut(&mut c.cfg_options).apply_diff(diff.clone());
-        // patch the origin
-        if c.basic.origin.is_local() {
-            let lang_crate = LangCrateOrigin::from(
-                c.extra.display_name.as_ref().map_or("", |it| it.canonical_name().as_str()),
-            );
-            c.basic.origin = CrateOrigin::Lang(lang_crate);
+    for cid in sysroot_crate_graph.iter() {
+        if let CrateOrigin::Lang(lang_crate) = sysroot_crate_graph[cid].basic.origin {
             match lang_crate {
                 LangCrateOrigin::Test
                 | LangCrateOrigin::Alloc
@@ -1627,7 +1632,7 @@ fn sysroot_to_crate_graph(
     let _p = tracing::info_span!("sysroot_to_crate_graph").entered();
     match sysroot.workspace() {
         RustLibSrcWorkspace::Workspace(cargo) => {
-            let (cg, pm) = cargo_to_crate_graph(
+            let (sysroot_cg, sysroot_pm) = cargo_to_crate_graph(
                 load,
                 None,
                 cargo,
@@ -1639,7 +1644,7 @@ fn sysroot_to_crate_graph(
                             CfgAtom::Flag(sym::debug_assertions.clone()),
                             CfgAtom::Flag(sym::miri.clone()),
                         ],
-                        vec![],
+                        vec![CfgAtom::Flag(sym::test.clone())],
                     ),
                     ..Default::default()
                 },
@@ -1648,10 +1653,10 @@ fn sysroot_to_crate_graph(
                 crate_ws_data,
             );
 
-            extend_crate_graph_with_sysroot(crate_graph, cg, pm)
+            extend_crate_graph_with_sysroot(crate_graph, sysroot_cg, sysroot_pm)
         }
         RustLibSrcWorkspace::Json(project_json) => {
-            let (cg, pm) = project_json_to_crate_graph(
+            let (sysroot_cg, sysroot_pm) = project_json_to_crate_graph(
                 rustc_cfg,
                 load,
                 project_json,
@@ -1668,10 +1673,11 @@ fn sysroot_to_crate_graph(
                     ..Default::default()
                 },
                 false,
+                true,
                 crate_ws_data,
             );
 
-            extend_crate_graph_with_sysroot(crate_graph, cg, pm)
+            extend_crate_graph_with_sysroot(crate_graph, sysroot_cg, sysroot_pm)
         }
         RustLibSrcWorkspace::Stitched(stitched) => {
             let cfg_options = Arc::new({
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/alloc/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/alloc/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/alloc/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/core/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/core/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/core/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/panic_abort/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/panic_abort/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/panic_abort/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/panic_unwind/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/panic_unwind/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/panic_unwind/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/proc_macro/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/proc_macro/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/proc_macro/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/profiler_builtins/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/profiler_builtins/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/profiler_builtins/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/std/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/std/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/std/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/stdarch/crates/std_detect/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/stdarch/crates/std_detect/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/stdarch/crates/std_detect/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/term/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/term/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/term/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/test/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/test/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/test/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/unwind/src/lib.rs b/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/unwind/src/lib.rs
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/src/tools/rust-analyzer/crates/project-model/test_data/fake-sysroot/unwind/src/lib.rs
+++ /dev/null
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model.txt b/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model.txt
index ae842bf704d..d30d67ed1f3 100644
--- a/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model.txt
+++ b/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model.txt
@@ -22,11 +22,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -108,11 +104,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -194,11 +186,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -280,11 +268,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -349,11 +333,7 @@
                 name: "libc",
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.98",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model_with_selective_overrides.txt b/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model_with_selective_overrides.txt
index ae842bf704d..d30d67ed1f3 100644
--- a/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model_with_selective_overrides.txt
+++ b/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model_with_selective_overrides.txt
@@ -22,11 +22,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -108,11 +104,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -194,11 +186,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -280,11 +268,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -349,11 +333,7 @@
                 name: "libc",
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.98",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model_with_wildcard_overrides.txt b/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model_with_wildcard_overrides.txt
index 272cd69cb14..925233ceb41 100644
--- a/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model_with_wildcard_overrides.txt
+++ b/src/tools/rust-analyzer/crates/project-model/test_data/output/cargo_hello_world_project_model_with_wildcard_overrides.txt
@@ -22,11 +22,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -107,11 +103,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -192,11 +184,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -277,11 +265,7 @@
                 ),
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$hello-world",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
@@ -345,11 +329,7 @@
                 name: "libc",
             },
             is_proc_macro: false,
-            proc_macro_cwd: Some(
-                AbsPathBuf(
-                    "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.98",
-                ),
-            ),
+            proc_macro_cwd: None,
         },
         extra: ExtraCrateData {
             version: Some(
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/output/rust_project_cfg_groups.txt b/src/tools/rust-analyzer/crates/project-model/test_data/output/rust_project_cfg_groups.txt
index 2b8e521f344..5f18d5e3f08 100644
--- a/src/tools/rust-analyzer/crates/project-model/test_data/output/rust_project_cfg_groups.txt
+++ b/src/tools/rust-analyzer/crates/project-model/test_data/output/rust_project_cfg_groups.txt
@@ -4,560 +4,8 @@
             root_file_id: FileId(
                 1,
             ),
-            edition: Edition2021,
-            dependencies: [
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(1),
-                    name: CrateName(
-                        "core",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-            ],
-            origin: Lang(
-                Alloc,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "alloc",
-                    ),
-                    canonical_name: "alloc",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    1: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                2,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Core,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "core",
-                    ),
-                    canonical_name: "core",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    2: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                3,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Other,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "panic_abort",
-                    ),
-                    canonical_name: "panic_abort",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    3: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                4,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Other,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "panic_unwind",
-                    ),
-                    canonical_name: "panic_unwind",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    4: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                5,
-            ),
-            edition: Edition2021,
-            dependencies: [
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(6),
-                    name: CrateName(
-                        "std",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(1),
-                    name: CrateName(
-                        "core",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-            ],
-            origin: Lang(
-                ProcMacro,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "proc_macro",
-                    ),
-                    canonical_name: "proc_macro",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    5: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                6,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Other,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "profiler_builtins",
-                    ),
-                    canonical_name: "profiler_builtins",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    6: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                7,
-            ),
-            edition: Edition2021,
-            dependencies: [
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(0),
-                    name: CrateName(
-                        "alloc",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(3),
-                    name: CrateName(
-                        "panic_unwind",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(2),
-                    name: CrateName(
-                        "panic_abort",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(1),
-                    name: CrateName(
-                        "core",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(5),
-                    name: CrateName(
-                        "profiler_builtins",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(9),
-                    name: CrateName(
-                        "unwind",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(7),
-                    name: CrateName(
-                        "std_detect",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(8),
-                    name: CrateName(
-                        "test",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-            ],
-            origin: Lang(
-                Std,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "std",
-                    ),
-                    canonical_name: "std",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    7: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                8,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Other,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "std_detect",
-                    ),
-                    canonical_name: "std_detect",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    8: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                9,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Test,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "test",
-                    ),
-                    canonical_name: "test",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    9: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                10,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Other,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "unwind",
-                    ),
-                    canonical_name: "unwind",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    10: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                11,
-            ),
             edition: Edition2018,
-            dependencies: [
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(1),
-                    name: CrateName(
-                        "core",
-                    ),
-                    prelude: true,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(0),
-                    name: CrateName(
-                        "alloc",
-                    ),
-                    prelude: false,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(6),
-                    name: CrateName(
-                        "std",
-                    ),
-                    prelude: true,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(8),
-                    name: CrateName(
-                        "test",
-                    ),
-                    prelude: false,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(4),
-                    name: CrateName(
-                        "proc_macro",
-                    ),
-                    prelude: false,
-                    sysroot: true,
-                },
-            ],
+            dependencies: [],
             origin: Local {
                 repo: None,
                 name: Some(
@@ -599,54 +47,13 @@
             toolchain: None,
         },
     },
-    11: CrateBuilder {
+    1: CrateBuilder {
         basic: CrateData {
             root_file_id: FileId(
-                11,
+                1,
             ),
             edition: Edition2018,
-            dependencies: [
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(1),
-                    name: CrateName(
-                        "core",
-                    ),
-                    prelude: true,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(0),
-                    name: CrateName(
-                        "alloc",
-                    ),
-                    prelude: false,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(6),
-                    name: CrateName(
-                        "std",
-                    ),
-                    prelude: true,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(8),
-                    name: CrateName(
-                        "test",
-                    ),
-                    prelude: false,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(4),
-                    name: CrateName(
-                        "proc_macro",
-                    ),
-                    prelude: false,
-                    sysroot: true,
-                },
-            ],
+            dependencies: [],
             origin: Local {
                 repo: None,
                 name: Some(
diff --git a/src/tools/rust-analyzer/crates/project-model/test_data/output/rust_project_hello_world_project_model.txt b/src/tools/rust-analyzer/crates/project-model/test_data/output/rust_project_hello_world_project_model.txt
index 053e9473cf2..5cb9992b203 100644
--- a/src/tools/rust-analyzer/crates/project-model/test_data/output/rust_project_hello_world_project_model.txt
+++ b/src/tools/rust-analyzer/crates/project-model/test_data/output/rust_project_hello_world_project_model.txt
@@ -4,560 +4,8 @@
             root_file_id: FileId(
                 1,
             ),
-            edition: Edition2021,
-            dependencies: [
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(1),
-                    name: CrateName(
-                        "core",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-            ],
-            origin: Lang(
-                Alloc,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "alloc",
-                    ),
-                    canonical_name: "alloc",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    1: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                2,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Core,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "core",
-                    ),
-                    canonical_name: "core",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    2: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                3,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Other,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "panic_abort",
-                    ),
-                    canonical_name: "panic_abort",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    3: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                4,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Other,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "panic_unwind",
-                    ),
-                    canonical_name: "panic_unwind",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    4: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                5,
-            ),
-            edition: Edition2021,
-            dependencies: [
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(6),
-                    name: CrateName(
-                        "std",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(1),
-                    name: CrateName(
-                        "core",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-            ],
-            origin: Lang(
-                ProcMacro,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "proc_macro",
-                    ),
-                    canonical_name: "proc_macro",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    5: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                6,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Other,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "profiler_builtins",
-                    ),
-                    canonical_name: "profiler_builtins",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    6: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                7,
-            ),
-            edition: Edition2021,
-            dependencies: [
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(0),
-                    name: CrateName(
-                        "alloc",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(3),
-                    name: CrateName(
-                        "panic_unwind",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(2),
-                    name: CrateName(
-                        "panic_abort",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(1),
-                    name: CrateName(
-                        "core",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(5),
-                    name: CrateName(
-                        "profiler_builtins",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(9),
-                    name: CrateName(
-                        "unwind",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(7),
-                    name: CrateName(
-                        "std_detect",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(8),
-                    name: CrateName(
-                        "test",
-                    ),
-                    prelude: true,
-                    sysroot: false,
-                },
-            ],
-            origin: Lang(
-                Std,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "std",
-                    ),
-                    canonical_name: "std",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    7: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                8,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Other,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "std_detect",
-                    ),
-                    canonical_name: "std_detect",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    8: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                9,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Test,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "test",
-                    ),
-                    canonical_name: "test",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    9: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                10,
-            ),
-            edition: Edition2021,
-            dependencies: [],
-            origin: Lang(
-                Other,
-            ),
-            is_proc_macro: false,
-            proc_macro_cwd: None,
-        },
-        extra: ExtraCrateData {
-            version: None,
-            display_name: Some(
-                CrateDisplayName {
-                    crate_name: CrateName(
-                        "unwind",
-                    ),
-                    canonical_name: "unwind",
-                },
-            ),
-            potential_cfg_options: None,
-        },
-        cfg_options: CfgOptions(
-            [
-                "debug_assertions",
-                "miri",
-                "true",
-            ],
-        ),
-        env: Env {
-            entries: {},
-        },
-        ws_data: CrateWorkspaceData {
-            data_layout: Err(
-                "test has no data layout",
-            ),
-            toolchain: None,
-        },
-    },
-    10: CrateBuilder {
-        basic: CrateData {
-            root_file_id: FileId(
-                11,
-            ),
             edition: Edition2018,
-            dependencies: [
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(1),
-                    name: CrateName(
-                        "core",
-                    ),
-                    prelude: true,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(0),
-                    name: CrateName(
-                        "alloc",
-                    ),
-                    prelude: false,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(6),
-                    name: CrateName(
-                        "std",
-                    ),
-                    prelude: true,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(8),
-                    name: CrateName(
-                        "test",
-                    ),
-                    prelude: false,
-                    sysroot: true,
-                },
-                Dependency {
-                    crate_id: Idx::<CrateBuilder>(4),
-                    name: CrateName(
-                        "proc_macro",
-                    ),
-                    prelude: false,
-                    sysroot: true,
-                },
-            ],
+            dependencies: [],
             origin: Local {
                 repo: None,
                 name: Some(