diff --git a/crates/base-db/src/input.rs b/crates/base-db/src/input.rs index 564697facf..3d94060823 100644 --- a/crates/base-db/src/input.rs +++ b/crates/base-db/src/input.rs @@ -311,6 +311,7 @@ pub struct CrateData { pub type CrateDataBuilder = CrateData; pub type BuiltCrateData = CrateData; +/// Crate data unrelated to analysis. #[derive(Debug, Clone, PartialEq, Eq)] pub struct ExtraCrateData { pub version: Option, @@ -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 + '_ { - 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 { diff --git a/crates/cfg/src/lib.rs b/crates/cfg/src/lib.rs index 8218a81556..86a7ea9900 100644 --- a/crates/cfg/src/lib.rs +++ b/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/crates/project-model/src/cargo_workspace.rs b/crates/project-model/src/cargo_workspace.rs index 054312835a..617c4116a6 100644 --- a/crates/project-model/src/cargo_workspace.rs +++ b/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/crates/project-model/src/sysroot.rs b/crates/project-model/src/sysroot.rs index c92dc9f6a6..7e8db8d39d 100644 --- a/crates/project-model/src/sysroot.rs +++ b/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/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs index ef7b334064..1faa7b81e4 100644 --- a/crates/project-model/src/tests.rs +++ b/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/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index 632e7b7689..f7bb875e65 100644 --- a/crates/project-model/src/workspace.rs +++ b/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, override_cfg: &CfgOverrides, set_test: bool, + is_sysroot: bool, crate_ws_data: Arc, ) -> (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) { 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/crates/project-model/test_data/fake-sysroot/alloc/src/lib.rs b/crates/project-model/test_data/fake-sysroot/alloc/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/fake-sysroot/core/src/lib.rs b/crates/project-model/test_data/fake-sysroot/core/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/fake-sysroot/panic_abort/src/lib.rs b/crates/project-model/test_data/fake-sysroot/panic_abort/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/fake-sysroot/panic_unwind/src/lib.rs b/crates/project-model/test_data/fake-sysroot/panic_unwind/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/fake-sysroot/proc_macro/src/lib.rs b/crates/project-model/test_data/fake-sysroot/proc_macro/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/fake-sysroot/profiler_builtins/src/lib.rs b/crates/project-model/test_data/fake-sysroot/profiler_builtins/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/fake-sysroot/std/src/lib.rs b/crates/project-model/test_data/fake-sysroot/std/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/fake-sysroot/stdarch/crates/std_detect/src/lib.rs b/crates/project-model/test_data/fake-sysroot/stdarch/crates/std_detect/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/fake-sysroot/term/src/lib.rs b/crates/project-model/test_data/fake-sysroot/term/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/fake-sysroot/test/src/lib.rs b/crates/project-model/test_data/fake-sysroot/test/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/fake-sysroot/unwind/src/lib.rs b/crates/project-model/test_data/fake-sysroot/unwind/src/lib.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/crates/project-model/test_data/output/cargo_hello_world_project_model.txt b/crates/project-model/test_data/output/cargo_hello_world_project_model.txt index ae842bf704..d30d67ed1f 100644 --- a/crates/project-model/test_data/output/cargo_hello_world_project_model.txt +++ b/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/crates/project-model/test_data/output/cargo_hello_world_project_model_with_selective_overrides.txt b/crates/project-model/test_data/output/cargo_hello_world_project_model_with_selective_overrides.txt index ae842bf704..d30d67ed1f 100644 --- a/crates/project-model/test_data/output/cargo_hello_world_project_model_with_selective_overrides.txt +++ b/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/crates/project-model/test_data/output/cargo_hello_world_project_model_with_wildcard_overrides.txt b/crates/project-model/test_data/output/cargo_hello_world_project_model_with_wildcard_overrides.txt index 272cd69cb1..925233ceb4 100644 --- a/crates/project-model/test_data/output/cargo_hello_world_project_model_with_wildcard_overrides.txt +++ b/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/crates/project-model/test_data/output/rust_project_cfg_groups.txt b/crates/project-model/test_data/output/rust_project_cfg_groups.txt index 2b8e521f34..5f18d5e3f0 100644 --- a/crates/project-model/test_data/output/rust_project_cfg_groups.txt +++ b/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::(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::(6), - name: CrateName( - "std", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(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::(0), - name: CrateName( - "alloc", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(3), - name: CrateName( - "panic_unwind", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(2), - name: CrateName( - "panic_abort", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(1), - name: CrateName( - "core", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(5), - name: CrateName( - "profiler_builtins", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(9), - name: CrateName( - "unwind", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(7), - name: CrateName( - "std_detect", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(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::(1), - name: CrateName( - "core", - ), - prelude: true, - sysroot: true, - }, - Dependency { - crate_id: Idx::(0), - name: CrateName( - "alloc", - ), - prelude: false, - sysroot: true, - }, - Dependency { - crate_id: Idx::(6), - name: CrateName( - "std", - ), - prelude: true, - sysroot: true, - }, - Dependency { - crate_id: Idx::(8), - name: CrateName( - "test", - ), - prelude: false, - sysroot: true, - }, - Dependency { - crate_id: Idx::(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::(1), - name: CrateName( - "core", - ), - prelude: true, - sysroot: true, - }, - Dependency { - crate_id: Idx::(0), - name: CrateName( - "alloc", - ), - prelude: false, - sysroot: true, - }, - Dependency { - crate_id: Idx::(6), - name: CrateName( - "std", - ), - prelude: true, - sysroot: true, - }, - Dependency { - crate_id: Idx::(8), - name: CrateName( - "test", - ), - prelude: false, - sysroot: true, - }, - Dependency { - crate_id: Idx::(4), - name: CrateName( - "proc_macro", - ), - prelude: false, - sysroot: true, - }, - ], + dependencies: [], origin: Local { repo: None, name: Some( diff --git a/crates/project-model/test_data/output/rust_project_hello_world_project_model.txt b/crates/project-model/test_data/output/rust_project_hello_world_project_model.txt index 053e9473cf..5cb9992b20 100644 --- a/crates/project-model/test_data/output/rust_project_hello_world_project_model.txt +++ b/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::(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::(6), - name: CrateName( - "std", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(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::(0), - name: CrateName( - "alloc", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(3), - name: CrateName( - "panic_unwind", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(2), - name: CrateName( - "panic_abort", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(1), - name: CrateName( - "core", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(5), - name: CrateName( - "profiler_builtins", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(9), - name: CrateName( - "unwind", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(7), - name: CrateName( - "std_detect", - ), - prelude: true, - sysroot: false, - }, - Dependency { - crate_id: Idx::(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::(1), - name: CrateName( - "core", - ), - prelude: true, - sysroot: true, - }, - Dependency { - crate_id: Idx::(0), - name: CrateName( - "alloc", - ), - prelude: false, - sysroot: true, - }, - Dependency { - crate_id: Idx::(6), - name: CrateName( - "std", - ), - prelude: true, - sysroot: true, - }, - Dependency { - crate_id: Idx::(8), - name: CrateName( - "test", - ), - prelude: false, - sysroot: true, - }, - Dependency { - crate_id: Idx::(4), - name: CrateName( - "proc_macro", - ), - prelude: false, - sysroot: true, - }, - ], + dependencies: [], origin: Local { repo: None, name: Some(