diff --git a/Cargo.lock b/Cargo.lock index 0e384a2e427..8759782bb29 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -87,7 +87,6 @@ name = "base-db" version = "0.0.0" dependencies = [ "cfg", - "indexmap", "la-arena", "profile", "rustc-hash", @@ -580,7 +579,6 @@ dependencies = [ "hir-def", "hir-expand", "hkalbasi-rustc-ap-rustc_index", - "indexmap", "intern", "itertools", "la-arena", diff --git a/crates/base-db/Cargo.toml b/crates/base-db/Cargo.toml index 3c0aedce147..c2d021c2238 100644 --- a/crates/base-db/Cargo.toml +++ b/crates/base-db/Cargo.toml @@ -14,7 +14,6 @@ doctest = false [dependencies] salsa = "0.17.0-pre.2" rustc-hash = "1.1.0" -indexmap = "1.6.0" la-arena = { version = "0.3.0", path = "../../lib/la-arena" } diff --git a/crates/base-db/src/input.rs b/crates/base-db/src/input.rs index a153e7f36cd..dfd0b2abc33 100644 --- a/crates/base-db/src/input.rs +++ b/crates/base-db/src/input.rs @@ -417,11 +417,6 @@ impl CrateGraph { Ok(()) } - pub fn duplicate(&mut self, id: CrateId) -> CrateId { - let data = self[id].clone(); - self.arena.alloc(data) - } - pub fn add_dep( &mut self, from: CrateId, @@ -617,12 +612,6 @@ impl ops::Index for CrateGraph { } } -impl ops::IndexMut for CrateGraph { - fn index_mut(&mut self, crate_id: CrateId) -> &mut CrateData { - &mut self.arena[crate_id] - } -} - impl CrateData { fn add_dep(&mut self, dep: Dependency) { self.dependencies.push(dep) diff --git a/crates/base-db/src/lib.rs b/crates/base-db/src/lib.rs index 7593135c5c4..b65cf7341f3 100644 --- a/crates/base-db/src/lib.rs +++ b/crates/base-db/src/lib.rs @@ -6,10 +6,9 @@ mod input; mod change; pub mod fixture; -use std::{hash::BuildHasherDefault, panic, sync::Arc}; +use std::{panic, sync::Arc}; -use indexmap::IndexSet; -use rustc_hash::FxHasher; +use rustc_hash::FxHashSet; use syntax::{ast, Parse, SourceFile, TextRange, TextSize}; pub use crate::{ @@ -60,10 +59,7 @@ pub trait FileLoader { /// Text of the file. fn file_text(&self, file_id: FileId) -> Arc; fn resolve_path(&self, path: AnchoredPath<'_>) -> Option; - fn relevant_crates( - &self, - file_id: FileId, - ) -> Arc>>; + fn relevant_crates(&self, file_id: FileId) -> Arc>; } /// Database which stores all significant input facts: source code and project @@ -103,16 +99,10 @@ pub trait SourceDatabaseExt: SourceDatabase { #[salsa::input] fn source_root(&self, id: SourceRootId) -> Arc; - fn source_root_crates( - &self, - id: SourceRootId, - ) -> Arc>>; + fn source_root_crates(&self, id: SourceRootId) -> Arc>; } -fn source_root_crates( - db: &dyn SourceDatabaseExt, - id: SourceRootId, -) -> Arc>> { +fn source_root_crates(db: &dyn SourceDatabaseExt, id: SourceRootId) -> Arc> { let graph = db.crate_graph(); let res = graph .iter() @@ -138,10 +128,7 @@ impl FileLoader for FileLoaderDelegate<&'_ T> { source_root.resolve_path(path) } - fn relevant_crates( - &self, - file_id: FileId, - ) -> Arc>> { + fn relevant_crates(&self, file_id: FileId) -> Arc> { let _p = profile::span("relevant_crates"); let source_root = self.0.file_source_root(file_id); self.0.source_root_crates(source_root) diff --git a/crates/hir-def/src/test_db.rs b/crates/hir-def/src/test_db.rs index 5a186466bc4..6bfcd90970d 100644 --- a/crates/hir-def/src/test_db.rs +++ b/crates/hir-def/src/test_db.rs @@ -1,9 +1,7 @@ //! Database used for testing `hir_def`. use std::{ - fmt, - hash::BuildHasherDefault, - panic, + fmt, panic, sync::{Arc, Mutex}, }; @@ -13,8 +11,7 @@ use base_db::{ Upcast, }; use hir_expand::{db::ExpandDatabase, InFile}; -use indexmap::IndexSet; -use rustc_hash::FxHasher; +use rustc_hash::FxHashSet; use syntax::{algo, ast, AstNode}; use crate::{ @@ -80,10 +77,7 @@ impl FileLoader for TestDB { fn resolve_path(&self, path: AnchoredPath<'_>) -> Option { FileLoaderDelegate(self).resolve_path(path) } - fn relevant_crates( - &self, - file_id: FileId, - ) -> Arc>> { + fn relevant_crates(&self, file_id: FileId) -> Arc> { FileLoaderDelegate(self).relevant_crates(file_id) } } diff --git a/crates/hir-ty/Cargo.toml b/crates/hir-ty/Cargo.toml index 7c153e28d0f..3ab7460e8cd 100644 --- a/crates/hir-ty/Cargo.toml +++ b/crates/hir-ty/Cargo.toml @@ -30,7 +30,6 @@ la-arena = { version = "0.3.0", path = "../../lib/la-arena" } once_cell = "1.17.0" typed-arena = "2.0.1" rustc_index = { version = "0.0.20221221", package = "hkalbasi-rustc-ap-rustc_index", default-features = false } -indexmap = "1.6.0" # local deps stdx.workspace = true diff --git a/crates/hir-ty/src/test_db.rs b/crates/hir-ty/src/test_db.rs index 7525106fd09..ca96a8d1724 100644 --- a/crates/hir-ty/src/test_db.rs +++ b/crates/hir-ty/src/test_db.rs @@ -1,9 +1,7 @@ //! Database used for testing `hir`. use std::{ - fmt, - hash::BuildHasherDefault, - panic, + fmt, panic, sync::{Arc, Mutex}, }; @@ -13,8 +11,7 @@ use base_db::{ }; use hir_def::{db::DefDatabase, ModuleId}; use hir_expand::db::ExpandDatabase; -use indexmap::IndexSet; -use rustc_hash::FxHasher; +use rustc_hash::FxHashSet; use stdx::hash::NoHashHashMap; use syntax::TextRange; use test_utils::extract_annotations; @@ -85,10 +82,7 @@ impl FileLoader for TestDB { fn resolve_path(&self, path: AnchoredPath<'_>) -> Option { FileLoaderDelegate(self).resolve_path(path) } - fn relevant_crates( - &self, - file_id: FileId, - ) -> Arc>> { + fn relevant_crates(&self, file_id: FileId) -> Arc> { FileLoaderDelegate(self).relevant_crates(file_id) } } diff --git a/crates/hir/src/semantics/source_to_def.rs b/crates/hir/src/semantics/source_to_def.rs index 12257247c87..c50ffa4f8b7 100644 --- a/crates/hir/src/semantics/source_to_def.rs +++ b/crates/hir/src/semantics/source_to_def.rs @@ -119,9 +119,7 @@ impl SourceToDefCtx<'_, '_> { pub(super) fn file_to_def(&self, file: FileId) -> SmallVec<[ModuleId; 1]> { let _p = profile::span("SourceBinder::to_module_def"); let mut mods = SmallVec::new(); - // HACK: We iterate in reverse so that dev-dependency duplicated crates appear first in this - // Most code only deals with one module and we want to prefer the test enabled code where possible - for &crate_id in self.db.relevant_crates(file).iter().rev() { + for &crate_id in self.db.relevant_crates(file).iter() { // FIXME: inner items let crate_def_map = self.db.crate_def_map(crate_id); mods.extend( diff --git a/crates/ide-db/src/lib.rs b/crates/ide-db/src/lib.rs index 879dbb74507..b0c5820fb09 100644 --- a/crates/ide-db/src/lib.rs +++ b/crates/ide-db/src/lib.rs @@ -43,7 +43,7 @@ pub mod syntax_helpers { pub use parser::LexedStr; } -use std::{fmt, hash::BuildHasherDefault, mem::ManuallyDrop, sync::Arc}; +use std::{fmt, mem::ManuallyDrop, sync::Arc}; use base_db::{ salsa::{self, Durability}, @@ -53,7 +53,6 @@ use hir::{ db::{DefDatabase, ExpandDatabase, HirDatabase}, symbols::FileSymbolKind, }; -use indexmap::IndexSet; use crate::{line_index::LineIndex, symbol_index::SymbolsDatabase}; pub use rustc_hash::{FxHashMap, FxHashSet, FxHasher}; @@ -120,10 +119,7 @@ impl FileLoader for RootDatabase { fn resolve_path(&self, path: AnchoredPath<'_>) -> Option { FileLoaderDelegate(self).resolve_path(path) } - fn relevant_crates( - &self, - file_id: FileId, - ) -> Arc>> { + fn relevant_crates(&self, file_id: FileId) -> Arc> { FileLoaderDelegate(self).relevant_crates(file_id) } } diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs index 3c0d53b26b8..3e5234afc81 100644 --- a/crates/project-model/src/tests.rs +++ b/crates/project-model/src/tests.rs @@ -5,7 +5,7 @@ use std::{ use base_db::{CrateGraph, FileId, ProcMacroPaths}; use cfg::{CfgAtom, CfgDiff}; -use expect_test::{expect, expect_file, Expect, ExpectFile}; +use expect_test::{expect, Expect}; use paths::{AbsPath, AbsPathBuf}; use serde::de::DeserializeOwned; @@ -114,11 +114,6 @@ fn check_crate_graph(crate_graph: CrateGraph, expect: Expect) { replace_root(&mut crate_graph, false); expect.assert_eq(&crate_graph); } -fn check_crate_graph_f(crate_graph: CrateGraph, expect: ExpectFile) { - let mut crate_graph = format!("{crate_graph:#?}"); - replace_root(&mut crate_graph, false); - expect.assert_eq(&crate_graph); -} #[test] fn cargo_hello_world_project_model_with_wildcard_overrides() { @@ -1671,12 +1666,3 @@ fn rust_project_is_proc_macro_has_proc_macro_dep() { // on the proc_macro sysroot crate. crate_data.dependencies.iter().find(|&dep| dep.name.deref() == "proc_macro").unwrap(); } - -#[test] -fn cargo_dev_dependencies() { - let (crate_graph, _proc_macros) = load_cargo("complex-with-dev-deps.json"); - check_crate_graph_f( - crate_graph, - expect_file!["../test_data/cargo_dev_dependencies-crate-graph.txt"], - ) -} diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index 065b25d7463..5518b6bc7f5 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -2,12 +2,7 @@ //! metadata` or `rust-project.json`) into representation stored in the salsa //! database -- `CrateGraph`. -use std::{ - collections::{hash_map::Entry, VecDeque}, - fmt, fs, - process::Command, - sync::Arc, -}; +use std::{collections::VecDeque, fmt, fs, process::Command, sync::Arc}; use anyhow::{format_err, Context, Result}; use base_db::{ @@ -849,12 +844,12 @@ fn cargo_to_crate_graph( None => (SysrootPublicDeps::default(), None), }; - let cfg_options = forced_cfg.clone().unwrap_or_else(|| { + let cfg_options = { let mut cfg_options = CfgOptions::default(); cfg_options.extend(rustc_cfg); cfg_options.insert_atom("debug_assertions".into()); cfg_options - }); + }; // Mapping of a package to its library target let mut pkg_to_lib_crate = FxHashMap::default(); @@ -866,6 +861,32 @@ fn cargo_to_crate_graph( for pkg in cargo.packages() { has_private |= cargo[pkg].metadata.rustc_private; + let cfg_options = forced_cfg.clone().unwrap_or_else(|| { + let mut cfg_options = cfg_options.clone(); + + // Add test cfg for local crates + if cargo[pkg].is_local { + cfg_options.insert_atom("test".into()); + } + + let overrides = match override_cfg { + CfgOverrides::Wildcard(cfg_diff) => Some(cfg_diff), + CfgOverrides::Selective(cfg_overrides) => cfg_overrides.get(&cargo[pkg].name), + }; + + if let Some(overrides) = overrides { + // FIXME: this is sort of a hack to deal with #![cfg(not(test))] vanishing such as seen + // in ed25519_dalek (#7243), and libcore (#9203) (although you only hit that one while + // working on rust-lang/rust as that's the only time it appears outside sysroot). + // + // A more ideal solution might be to reanalyze crates based on where the cursor is and + // figure out the set of cfgs that would have to apply to make it active. + + cfg_options.apply_diff(overrides.clone()); + }; + cfg_options + }); + let mut lib_tgt = None; for &tgt in cargo[pkg].targets.iter() { if cargo[tgt].kind != TargetKind::Lib && !cargo[pkg].is_member { @@ -876,7 +897,7 @@ fn cargo_to_crate_graph( // https://github.com/rust-lang/rust-analyzer/issues/11300 continue; } - let Some(file_id) = load(&cargo[tgt].root) else { continue }; + let Some(file_id) = load(&cargo[tgt].root) else { continue }; let crate_id = add_target_crate_root( crate_graph, @@ -904,19 +925,15 @@ fn cargo_to_crate_graph( pkg_crates.entry(pkg).or_insert_with(Vec::new).push((crate_id, cargo[tgt].kind)); } - let Some(targets) = pkg_crates.get(&pkg) else { continue }; // Set deps to the core, std and to the lib target of the current package - for &(from, kind) in targets { + for &(from, kind) in pkg_crates.get(&pkg).into_iter().flatten() { // Add sysroot deps first so that a lib target named `core` etc. can overwrite them. public_deps.add_to_crate_graph(crate_graph, from); // Add dep edge of all targets to the package's lib target if let Some((to, name)) = lib_tgt.clone() { - if to != from { - if kind == TargetKind::BuildScript { - // build script can not depend on its library target - continue; - } + if to != from && kind != TargetKind::BuildScript { + // (build script can not depend on its library target) // For root projects with dashes in their name, // cargo metadata does not do any normalization, @@ -928,47 +945,6 @@ fn cargo_to_crate_graph( } } - // We now need to duplicate workspace members that are used as dev-dependencies to prevent - // cycles from forming. - - // Map from crate id to it's dev-dependency clone id - let mut test_dupes = FxHashMap::default(); - let mut work = vec![]; - - // Get all dependencies of the workspace members that are used as dev-dependencies - for pkg in cargo.packages() { - for dep in &cargo[pkg].dependencies { - if dep.kind == DepKind::Dev && cargo[dep.pkg].is_member { - work.push(dep.pkg); - } - } - } - while let Some(pkg) = work.pop() { - let Some(&to) = pkg_to_lib_crate.get(&pkg) else { continue }; - match test_dupes.entry(to) { - Entry::Occupied(_) => continue, - Entry::Vacant(v) => { - for dep in &cargo[pkg].dependencies { - if dep.kind == DepKind::Normal && cargo[dep.pkg].is_member { - work.push(dep.pkg); - } - } - v.insert({ - let duped = crate_graph.duplicate(to); - tracing::info!( - "duplicating workspace crate {:?} as it is being used as a dev-dependency: {to:?} -> {duped:?}", - crate_graph[to].display_name - ); - if let Some(proc_macro) = proc_macros.get(&to).cloned() { - proc_macros.insert(duped, proc_macro); - } - crate_graph[duped].cfg_options.insert_atom("test".into()); - duped - }); - } - } - } - // Now add a dep edge from all targets of upstream to the lib // target of downstream. for pkg in cargo.packages() { @@ -982,71 +958,12 @@ fn cargo_to_crate_graph( if (dep.kind == DepKind::Build) != (kind == TargetKind::BuildScript) { continue; } - add_dep( - crate_graph, - from, - name.clone(), - if dep.kind == DepKind::Dev { - // point to the test enabled duplicate for dev-dependencies - test_dupes.get(&to).copied().unwrap_or(to) - } else { - to - }, - ); - if dep.kind == DepKind::Normal && cargo[dep.pkg].is_member { - // Also apply the dependency as a test enabled dependency to the test duplicate - if let Some(&dupe) = test_dupes.get(&from) { - let to = test_dupes.get(&to).copied().unwrap_or_else(|| { - panic!( - "dependency of a dev dependency did not get duplicated! {:?} {:?}", - crate_graph[to].display_name, crate_graph[from].display_name, - ) - }); - add_dep(crate_graph, dupe, name.clone(), to); - } - } + add_dep(crate_graph, from, name.clone(), to) } } } - for (&pkg, targets) in &pkg_crates { - for &(krate, _) in targets { - if let Some(&dupe) = test_dupes.get(&krate) { - tracing::info!( - "{krate:?} {:?} {dupe:?} {:?}", - crate_graph[krate].cfg_options, - crate_graph[dupe].cfg_options - ); - // if the crate got duped as a dev-dep the dupe already has test set - continue; - } - let cfg_options = &mut crate_graph[krate].cfg_options; - - // Add test cfg for local crates - if cargo[pkg].is_local { - cfg_options.insert_atom("test".into()); - } - - let overrides = match override_cfg { - CfgOverrides::Wildcard(cfg_diff) => Some(cfg_diff), - CfgOverrides::Selective(cfg_overrides) => cfg_overrides.get(&cargo[pkg].name), - }; - - if let Some(overrides) = overrides { - // FIXME: this is sort of a hack to deal with #![cfg(not(test))] vanishing such as seen - // in ed25519_dalek (#7243), and libcore (#9203) (although you only hit that one while - // working on rust-lang/rust as that's the only time it appears outside sysroot). - // - // A more ideal solution might be to reanalyze crates based on where the cursor is and - // figure out the set of cfgs that would have to apply to make it active. - - cfg_options.apply_diff(overrides.clone()); - }; - } - } - - // FIXME: Handle rustc private crates properly when used as dev-dependencies if has_private { // If the user provided a path to rustc sources, we add all the rustc_private crates // and create dependencies on them for the crates which opt-in to that @@ -1170,9 +1087,7 @@ fn handle_rustc_crates( continue; } for dep in &rustc_workspace[pkg].dependencies { - if dep.kind == DepKind::Normal { - queue.push_back(dep.pkg); - } + queue.push_back(dep.pkg); } let mut cfg_options = cfg_options.clone(); @@ -1482,12 +1397,10 @@ fn handle_hack_cargo_workspace( .collect() } -#[track_caller] fn add_dep(graph: &mut CrateGraph, from: CrateId, name: CrateName, to: CrateId) { add_dep_inner(graph, from, Dependency::new(name, to)) } -#[track_caller] fn add_dep_with_prelude( graph: &mut CrateGraph, from: CrateId, @@ -1498,18 +1411,13 @@ fn add_dep_with_prelude( add_dep_inner(graph, from, Dependency::with_prelude(name, to, prelude)) } -#[track_caller] fn add_proc_macro_dep(crate_graph: &mut CrateGraph, from: CrateId, to: CrateId, prelude: bool) { add_dep_with_prelude(crate_graph, from, CrateName::new("proc_macro").unwrap(), to, prelude); } -#[track_caller] fn add_dep_inner(graph: &mut CrateGraph, from: CrateId, dep: Dependency) { if let Err(err) = graph.add_dep(from, dep) { - if cfg!(test) { - panic!("{}", err); - } - tracing::error!("{}", err); + tracing::error!("{}", err) } } diff --git a/crates/project-model/test_data/cargo_dev_dependencies-crate-graph.txt b/crates/project-model/test_data/cargo_dev_dependencies-crate-graph.txt deleted file mode 100644 index 10709402514..00000000000 --- a/crates/project-model/test_data/cargo_dev_dependencies-crate-graph.txt +++ /dev/null @@ -1,609 +0,0 @@ -{ - 0: CrateData { - root_file_id: FileId( - 1, - ), - edition: Edition2018, - version: Some( - "0.7.20", - ), - display_name: Some( - CrateDisplayName { - crate_name: CrateName( - "aho_corasick", - ), - canonical_name: "aho_corasick", - }, - ), - cfg_options: CfgOptions( - [ - "debug_assertions", - "feature=default", - "feature=std", - ], - ), - potential_cfg_options: Some( - CfgOptions( - [ - "debug_assertions", - "feature=default", - "feature=std", - ], - ), - ), - env: Env { - entries: { - "CARGO_PKG_LICENSE": "", - "CARGO_PKG_VERSION_MAJOR": "0", - "CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/aho-corasick-0.7.20", - "CARGO_PKG_VERSION": "0.7.20", - "CARGO_PKG_AUTHORS": "", - "CARGO_CRATE_NAME": "aho_corasick", - "CARGO_PKG_LICENSE_FILE": "", - "CARGO_PKG_HOMEPAGE": "", - "CARGO_PKG_DESCRIPTION": "", - "CARGO_PKG_NAME": "aho-corasick", - "CARGO_PKG_VERSION_PATCH": "20", - "CARGO": "cargo", - "CARGO_PKG_REPOSITORY": "", - "CARGO_PKG_VERSION_MINOR": "7", - "CARGO_PKG_VERSION_PRE": "", - }, - }, - dependencies: [ - Dependency { - crate_id: Idx::(2), - name: CrateName( - "memchr", - ), - prelude: true, - }, - ], - origin: Library { - repo: Some( - "https://github.com/BurntSushi/aho-corasick", - ), - name: "aho-corasick", - }, - is_proc_macro: false, - target_layout: Err( - "target_data_layout not loaded", - ), - channel: None, - }, - 1: CrateData { - root_file_id: FileId( - 2, - ), - edition: Edition2021, - version: Some( - "0.3.0", - ), - display_name: Some( - CrateDisplayName { - crate_name: CrateName( - "la_arena", - ), - canonical_name: "la-arena", - }, - ), - cfg_options: CfgOptions( - [ - "debug_assertions", - ], - ), - potential_cfg_options: None, - env: Env { - entries: { - "CARGO_PKG_LICENSE": "", - "CARGO_PKG_VERSION_MAJOR": "0", - "CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/la-arena-0.3.0", - "CARGO_PKG_VERSION": "0.3.0", - "CARGO_PKG_AUTHORS": "", - "CARGO_CRATE_NAME": "la_arena", - "CARGO_PKG_LICENSE_FILE": "", - "CARGO_PKG_HOMEPAGE": "", - "CARGO_PKG_DESCRIPTION": "", - "CARGO_PKG_NAME": "la-arena", - "CARGO_PKG_VERSION_PATCH": "0", - "CARGO": "cargo", - "CARGO_PKG_REPOSITORY": "", - "CARGO_PKG_VERSION_MINOR": "3", - "CARGO_PKG_VERSION_PRE": "", - }, - }, - dependencies: [], - origin: Library { - repo: Some( - "https://github.com/rust-lang/rust-analyzer/tree/master/lib/la-arena", - ), - name: "la-arena", - }, - is_proc_macro: false, - target_layout: Err( - "target_data_layout not loaded", - ), - channel: None, - }, - 2: CrateData { - root_file_id: FileId( - 3, - ), - edition: Edition2018, - version: Some( - "2.5.0", - ), - display_name: Some( - CrateDisplayName { - crate_name: CrateName( - "memchr", - ), - canonical_name: "memchr", - }, - ), - cfg_options: CfgOptions( - [ - "debug_assertions", - "feature=default", - "feature=std", - ], - ), - potential_cfg_options: Some( - CfgOptions( - [ - "debug_assertions", - "feature=compiler_builtins", - "feature=core", - "feature=default", - "feature=libc", - "feature=rustc-dep-of-std", - "feature=std", - "feature=use_std", - ], - ), - ), - env: Env { - entries: { - "CARGO_PKG_LICENSE": "", - "CARGO_PKG_VERSION_MAJOR": "2", - "CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0", - "CARGO_PKG_VERSION": "2.5.0", - "CARGO_PKG_AUTHORS": "", - "CARGO_CRATE_NAME": "memchr", - "CARGO_PKG_LICENSE_FILE": "", - "CARGO_PKG_HOMEPAGE": "", - "CARGO_PKG_DESCRIPTION": "", - "CARGO_PKG_NAME": "memchr", - "CARGO_PKG_VERSION_PATCH": "0", - "CARGO": "cargo", - "CARGO_PKG_REPOSITORY": "", - "CARGO_PKG_VERSION_MINOR": "5", - "CARGO_PKG_VERSION_PRE": "", - }, - }, - dependencies: [], - origin: Library { - repo: Some( - "https://github.com/BurntSushi/memchr", - ), - name: "memchr", - }, - is_proc_macro: false, - target_layout: Err( - "target_data_layout not loaded", - ), - channel: None, - }, - 3: CrateData { - root_file_id: FileId( - 4, - ), - edition: Edition2021, - version: Some( - "0.1.0", - ), - display_name: Some( - CrateDisplayName { - crate_name: CrateName( - "ra_playground", - ), - canonical_name: "ra-playground", - }, - ), - cfg_options: CfgOptions( - [ - "debug_assertions", - ], - ), - potential_cfg_options: None, - env: Env { - entries: { - "CARGO_PKG_LICENSE": "", - "CARGO_PKG_VERSION_MAJOR": "0", - "CARGO_MANIFEST_DIR": "$ROOT$ra-playground", - "CARGO_PKG_VERSION": "0.1.0", - "CARGO_PKG_AUTHORS": "", - "CARGO_CRATE_NAME": "ra_playground", - "CARGO_PKG_LICENSE_FILE": "", - "CARGO_PKG_HOMEPAGE": "", - "CARGO_PKG_DESCRIPTION": "", - "CARGO_PKG_NAME": "ra-playground", - "CARGO_PKG_VERSION_PATCH": "0", - "CARGO": "cargo", - "CARGO_PKG_REPOSITORY": "", - "CARGO_PKG_VERSION_MINOR": "1", - "CARGO_PKG_VERSION_PRE": "", - }, - }, - dependencies: [ - Dependency { - crate_id: Idx::(1), - name: CrateName( - "la_arena", - ), - prelude: true, - }, - Dependency { - crate_id: Idx::(7), - name: CrateName( - "ra_playground", - ), - prelude: true, - }, - Dependency { - crate_id: Idx::(5), - name: CrateName( - "regex", - ), - prelude: true, - }, - ], - origin: Local { - repo: None, - name: Some( - "ra-playground", - ), - }, - is_proc_macro: false, - target_layout: Err( - "target_data_layout not loaded", - ), - channel: None, - }, - 4: CrateData { - root_file_id: FileId( - 5, - ), - edition: Edition2021, - version: Some( - "0.1.0", - ), - display_name: Some( - CrateDisplayName { - crate_name: CrateName( - "ra_playground", - ), - canonical_name: "ra-playground", - }, - ), - cfg_options: CfgOptions( - [ - "debug_assertions", - "test", - ], - ), - potential_cfg_options: None, - env: Env { - entries: { - "CARGO_PKG_LICENSE": "", - "CARGO_PKG_VERSION_MAJOR": "0", - "CARGO_MANIFEST_DIR": "$ROOT$ra-playground", - "CARGO_PKG_VERSION": "0.1.0", - "CARGO_PKG_AUTHORS": "", - "CARGO_CRATE_NAME": "ra_playground", - "CARGO_PKG_LICENSE_FILE": "", - "CARGO_PKG_HOMEPAGE": "", - "CARGO_PKG_DESCRIPTION": "", - "CARGO_PKG_NAME": "ra-playground", - "CARGO_PKG_VERSION_PATCH": "0", - "CARGO": "cargo", - "CARGO_PKG_REPOSITORY": "", - "CARGO_PKG_VERSION_MINOR": "1", - "CARGO_PKG_VERSION_PRE": "", - }, - }, - dependencies: [ - Dependency { - crate_id: Idx::(3), - name: CrateName( - "ra_playground", - ), - prelude: true, - }, - Dependency { - crate_id: Idx::(1), - name: CrateName( - "la_arena", - ), - prelude: true, - }, - Dependency { - crate_id: Idx::(7), - name: CrateName( - "ra_playground", - ), - prelude: true, - }, - Dependency { - crate_id: Idx::(5), - name: CrateName( - "regex", - ), - prelude: true, - }, - ], - origin: Local { - repo: None, - name: Some( - "ra-playground", - ), - }, - is_proc_macro: false, - target_layout: Err( - "target_data_layout not loaded", - ), - channel: None, - }, - 5: CrateData { - root_file_id: FileId( - 6, - ), - edition: Edition2018, - version: Some( - "1.7.3", - ), - display_name: Some( - CrateDisplayName { - crate_name: CrateName( - "regex", - ), - canonical_name: "regex", - }, - ), - cfg_options: CfgOptions( - [ - "debug_assertions", - "feature=aho-corasick", - "feature=default", - "feature=memchr", - "feature=perf", - "feature=perf-cache", - "feature=perf-dfa", - "feature=perf-inline", - "feature=perf-literal", - "feature=std", - "feature=unicode", - "feature=unicode-age", - "feature=unicode-bool", - "feature=unicode-case", - "feature=unicode-gencat", - "feature=unicode-perl", - "feature=unicode-script", - "feature=unicode-segment", - ], - ), - potential_cfg_options: Some( - CfgOptions( - [ - "debug_assertions", - "feature=aho-corasick", - "feature=default", - "feature=memchr", - "feature=pattern", - "feature=perf", - "feature=perf-cache", - "feature=perf-dfa", - "feature=perf-inline", - "feature=perf-literal", - "feature=std", - "feature=unicode", - "feature=unicode-age", - "feature=unicode-bool", - "feature=unicode-case", - "feature=unicode-gencat", - "feature=unicode-perl", - "feature=unicode-script", - "feature=unicode-segment", - "feature=unstable", - "feature=use_std", - ], - ), - ), - env: Env { - entries: { - "CARGO_PKG_LICENSE": "", - "CARGO_PKG_VERSION_MAJOR": "1", - "CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3", - "CARGO_PKG_VERSION": "1.7.3", - "CARGO_PKG_AUTHORS": "", - "CARGO_CRATE_NAME": "regex", - "CARGO_PKG_LICENSE_FILE": "", - "CARGO_PKG_HOMEPAGE": "", - "CARGO_PKG_DESCRIPTION": "", - "CARGO_PKG_NAME": "regex", - "CARGO_PKG_VERSION_PATCH": "3", - "CARGO": "cargo", - "CARGO_PKG_REPOSITORY": "", - "CARGO_PKG_VERSION_MINOR": "7", - "CARGO_PKG_VERSION_PRE": "", - }, - }, - dependencies: [ - Dependency { - crate_id: Idx::(0), - name: CrateName( - "aho_corasick", - ), - prelude: true, - }, - Dependency { - crate_id: Idx::(2), - name: CrateName( - "memchr", - ), - prelude: true, - }, - Dependency { - crate_id: Idx::(6), - name: CrateName( - "regex_syntax", - ), - prelude: true, - }, - ], - origin: Library { - repo: Some( - "https://github.com/rust-lang/regex", - ), - name: "regex", - }, - is_proc_macro: false, - target_layout: Err( - "target_data_layout not loaded", - ), - channel: None, - }, - 6: CrateData { - root_file_id: FileId( - 7, - ), - edition: Edition2018, - version: Some( - "0.6.29", - ), - display_name: Some( - CrateDisplayName { - crate_name: CrateName( - "regex_syntax", - ), - canonical_name: "regex-syntax", - }, - ), - cfg_options: CfgOptions( - [ - "debug_assertions", - "feature=default", - "feature=unicode", - "feature=unicode-age", - "feature=unicode-bool", - "feature=unicode-case", - "feature=unicode-gencat", - "feature=unicode-perl", - "feature=unicode-script", - "feature=unicode-segment", - ], - ), - potential_cfg_options: Some( - CfgOptions( - [ - "debug_assertions", - "feature=default", - "feature=unicode", - "feature=unicode-age", - "feature=unicode-bool", - "feature=unicode-case", - "feature=unicode-gencat", - "feature=unicode-perl", - "feature=unicode-script", - "feature=unicode-segment", - ], - ), - ), - env: Env { - entries: { - "CARGO_PKG_LICENSE": "", - "CARGO_PKG_VERSION_MAJOR": "0", - "CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-syntax-0.6.29", - "CARGO_PKG_VERSION": "0.6.29", - "CARGO_PKG_AUTHORS": "", - "CARGO_CRATE_NAME": "regex_syntax", - "CARGO_PKG_LICENSE_FILE": "", - "CARGO_PKG_HOMEPAGE": "", - "CARGO_PKG_DESCRIPTION": "", - "CARGO_PKG_NAME": "regex-syntax", - "CARGO_PKG_VERSION_PATCH": "29", - "CARGO": "cargo", - "CARGO_PKG_REPOSITORY": "", - "CARGO_PKG_VERSION_MINOR": "6", - "CARGO_PKG_VERSION_PRE": "", - }, - }, - dependencies: [], - origin: Library { - repo: Some( - "https://github.com/rust-lang/regex", - ), - name: "regex-syntax", - }, - is_proc_macro: false, - target_layout: Err( - "target_data_layout not loaded", - ), - channel: None, - }, - 7: CrateData { - root_file_id: FileId( - 4, - ), - edition: Edition2021, - version: Some( - "0.1.0", - ), - display_name: Some( - CrateDisplayName { - crate_name: CrateName( - "ra_playground", - ), - canonical_name: "ra-playground", - }, - ), - cfg_options: CfgOptions( - [ - "debug_assertions", - "test", - ], - ), - potential_cfg_options: None, - env: Env { - entries: { - "CARGO_PKG_LICENSE": "", - "CARGO_PKG_VERSION_MAJOR": "0", - "CARGO_MANIFEST_DIR": "$ROOT$ra-playground", - "CARGO_PKG_VERSION": "0.1.0", - "CARGO_PKG_AUTHORS": "", - "CARGO_CRATE_NAME": "ra_playground", - "CARGO_PKG_LICENSE_FILE": "", - "CARGO_PKG_HOMEPAGE": "", - "CARGO_PKG_DESCRIPTION": "", - "CARGO_PKG_NAME": "ra-playground", - "CARGO_PKG_VERSION_PATCH": "0", - "CARGO": "cargo", - "CARGO_PKG_REPOSITORY": "", - "CARGO_PKG_VERSION_MINOR": "1", - "CARGO_PKG_VERSION_PRE": "", - }, - }, - dependencies: [], - origin: Local { - repo: None, - name: Some( - "ra-playground", - ), - }, - is_proc_macro: false, - target_layout: Err( - "target_data_layout not loaded", - ), - channel: None, - }, -} \ No newline at end of file diff --git a/crates/project-model/test_data/complex-with-dev-deps.json b/crates/project-model/test_data/complex-with-dev-deps.json deleted file mode 100644 index 6046e16d7d5..00000000000 --- a/crates/project-model/test_data/complex-with-dev-deps.json +++ /dev/null @@ -1,985 +0,0 @@ -{ - "packages": [ - { - "name": "aho-corasick", - "version": "0.7.20", - "id": "aho-corasick 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)", - "license": "Unlicense OR MIT", - "license_file": null, - "description": "Fast multiple substring searching.", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "dependencies": [ - { - "name": "memchr", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^2.4.0", - "kind": null, - "rename": null, - "optional": false, - "uses_default_features": false, - "features": [], - "target": null, - "registry": null - } - ], - "targets": [ - { - "kind": [ - "lib" - ], - "crate_types": [ - "lib" - ], - "name": "aho_corasick", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/aho-corasick-0.7.20/src/lib.rs", - "edition": "2018", - "doc": true, - "doctest": true, - "test": true - } - ], - "features": { - "default": [ - "std" - ], - "std": [ - "memchr/std" - ] - }, - "manifest_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/aho-corasick-0.7.20/Cargo.toml", - "metadata": null, - "publish": null, - "authors": [ - "Andrew Gallant " - ], - "categories": [ - "text-processing" - ], - "keywords": [ - "string", - "search", - "text", - "aho", - "multi" - ], - "readme": "README.md", - "repository": "https://github.com/BurntSushi/aho-corasick", - "homepage": "https://github.com/BurntSushi/aho-corasick", - "documentation": null, - "edition": "2018", - "links": null, - "default_run": null, - "rust_version": null - }, - { - "name": "la-arena", - "version": "0.3.0", - "id": "la-arena 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "license": "MIT OR Apache-2.0", - "license_file": null, - "description": "Simple index-based arena without deletion.", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "dependencies": [], - "targets": [ - { - "kind": [ - "lib" - ], - "crate_types": [ - "lib" - ], - "name": "la-arena", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/la-arena-0.3.0/src/lib.rs", - "edition": "2021", - "doc": true, - "doctest": true, - "test": true - } - ], - "features": {}, - "manifest_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/la-arena-0.3.0/Cargo.toml", - "metadata": null, - "publish": null, - "authors": [], - "categories": [ - "data-structures", - "memory-management", - "rust-patterns" - ], - "keywords": [], - "readme": null, - "repository": "https://github.com/rust-lang/rust-analyzer/tree/master/lib/la-arena", - "homepage": null, - "documentation": "https://docs.rs/la-arena", - "edition": "2021", - "links": null, - "default_run": null, - "rust_version": "1.56" - }, - { - "name": "memchr", - "version": "2.5.0", - "id": "memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "license": "Unlicense/MIT", - "license_file": null, - "description": "Safe interface to memchr.", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "dependencies": [ - { - "name": "compiler_builtins", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^0.1.2", - "kind": null, - "rename": null, - "optional": true, - "uses_default_features": true, - "features": [], - "target": null, - "registry": null - }, - { - "name": "rustc-std-workspace-core", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^1.0.0", - "kind": null, - "rename": "core", - "optional": true, - "uses_default_features": true, - "features": [], - "target": null, - "registry": null - }, - { - "name": "libc", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^0.2.18", - "kind": null, - "rename": null, - "optional": true, - "uses_default_features": false, - "features": [], - "target": null, - "registry": null - }, - { - "name": "quickcheck", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^1.0.3", - "kind": "dev", - "rename": null, - "optional": false, - "uses_default_features": false, - "features": [], - "target": null, - "registry": null - } - ], - "targets": [ - { - "kind": [ - "lib" - ], - "crate_types": [ - "lib" - ], - "name": "memchr", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0/src/lib.rs", - "edition": "2018", - "doc": true, - "doctest": true, - "test": true - }, - { - "kind": [ - "custom-build" - ], - "crate_types": [ - "bin" - ], - "name": "build-script-build", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0/build.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": false - } - ], - "features": { - "compiler_builtins": [ - "dep:compiler_builtins" - ], - "core": [ - "dep:core" - ], - "default": [ - "std" - ], - "libc": [ - "dep:libc" - ], - "rustc-dep-of-std": [ - "core", - "compiler_builtins" - ], - "std": [], - "use_std": [ - "std" - ] - }, - "manifest_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0/Cargo.toml", - "metadata": null, - "publish": null, - "authors": [ - "Andrew Gallant ", - "bluss" - ], - "categories": [], - "keywords": [ - "memchr", - "char", - "scan", - "strchr", - "string" - ], - "readme": "README.md", - "repository": "https://github.com/BurntSushi/memchr", - "homepage": "https://github.com/BurntSushi/memchr", - "documentation": "https://docs.rs/memchr/", - "edition": "2018", - "links": null, - "default_run": null, - "rust_version": null - }, - { - "name": "ra-playground", - "version": "0.1.0", - "id": "ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)", - "license": null, - "license_file": null, - "description": null, - "source": null, - "dependencies": [ - { - "name": "la-arena", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "*", - "kind": null, - "rename": null, - "optional": false, - "uses_default_features": true, - "features": [], - "target": null, - "registry": null - }, - { - "name": "ra-playground", - "source": null, - "req": "*", - "kind": "dev", - "rename": null, - "optional": false, - "uses_default_features": true, - "features": [], - "target": null, - "registry": null, - "path": "$ROOT$ra-playground" - }, - { - "name": "regex", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "*", - "kind": "dev", - "rename": null, - "optional": false, - "uses_default_features": true, - "features": [], - "target": null, - "registry": null - } - ], - "targets": [ - { - "kind": [ - "lib" - ], - "crate_types": [ - "lib" - ], - "name": "ra-playground", - "src_path": "$ROOT$ra-playground/src/lib.rs", - "edition": "2021", - "doc": true, - "doctest": true, - "test": true - }, - { - "kind": [ - "bin" - ], - "crate_types": [ - "bin" - ], - "name": "ra-playground", - "src_path": "$ROOT$ra-playground/src/main.rs", - "edition": "2021", - "doc": true, - "doctest": false, - "test": true - } - ], - "features": {}, - "manifest_path": "$ROOT$ra-playground/Cargo.toml", - "metadata": null, - "publish": null, - "authors": [], - "categories": [], - "keywords": [], - "readme": null, - "repository": null, - "homepage": null, - "documentation": null, - "edition": "2021", - "links": null, - "default_run": null, - "rust_version": null - }, - { - "name": "regex", - "version": "1.7.3", - "id": "regex 1.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "license": "MIT OR Apache-2.0", - "license_file": null, - "description": "An implementation of regular expressions for Rust. This implementation uses\nfinite automata and guarantees linear time matching on all inputs.\n", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "dependencies": [ - { - "name": "aho-corasick", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^0.7.18", - "kind": null, - "rename": null, - "optional": true, - "uses_default_features": true, - "features": [], - "target": null, - "registry": null - }, - { - "name": "memchr", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^2.4.0", - "kind": null, - "rename": null, - "optional": true, - "uses_default_features": true, - "features": [], - "target": null, - "registry": null - }, - { - "name": "regex-syntax", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^0.6.29", - "kind": null, - "rename": null, - "optional": false, - "uses_default_features": false, - "features": [], - "target": null, - "registry": null - }, - { - "name": "lazy_static", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^1", - "kind": "dev", - "rename": null, - "optional": false, - "uses_default_features": true, - "features": [], - "target": null, - "registry": null - }, - { - "name": "quickcheck", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^1.0.3", - "kind": "dev", - "rename": null, - "optional": false, - "uses_default_features": false, - "features": [], - "target": null, - "registry": null - }, - { - "name": "rand", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "req": "^0.8.3", - "kind": "dev", - "rename": null, - "optional": false, - "uses_default_features": false, - "features": [ - "getrandom", - "small_rng" - ], - "target": null, - "registry": null - } - ], - "targets": [ - { - "kind": [ - "lib" - ], - "crate_types": [ - "lib" - ], - "name": "regex", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/src/lib.rs", - "edition": "2018", - "doc": true, - "doctest": false, - "test": true - }, - { - "kind": [ - "example" - ], - "crate_types": [ - "bin" - ], - "name": "shootout-regex-dna-bytes", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna-bytes.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": false - }, - { - "kind": [ - "example" - ], - "crate_types": [ - "bin" - ], - "name": "shootout-regex-dna-cheat", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna-cheat.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": false - }, - { - "kind": [ - "example" - ], - "crate_types": [ - "bin" - ], - "name": "shootout-regex-dna-replace", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna-replace.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": false - }, - { - "kind": [ - "example" - ], - "crate_types": [ - "bin" - ], - "name": "shootout-regex-dna-single-cheat", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna-single-cheat.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": false - }, - { - "kind": [ - "example" - ], - "crate_types": [ - "bin" - ], - "name": "shootout-regex-dna-single", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna-single.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": false - }, - { - "kind": [ - "example" - ], - "crate_types": [ - "bin" - ], - "name": "shootout-regex-dna", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": false - }, - { - "kind": [ - "test" - ], - "crate_types": [ - "bin" - ], - "name": "default", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_default.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": true - }, - { - "kind": [ - "test" - ], - "crate_types": [ - "bin" - ], - "name": "default-bytes", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_default_bytes.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": true - }, - { - "kind": [ - "test" - ], - "crate_types": [ - "bin" - ], - "name": "nfa", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_nfa.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": true - }, - { - "kind": [ - "test" - ], - "crate_types": [ - "bin" - ], - "name": "nfa-utf8bytes", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_nfa_utf8bytes.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": true - }, - { - "kind": [ - "test" - ], - "crate_types": [ - "bin" - ], - "name": "nfa-bytes", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_nfa_bytes.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": true - }, - { - "kind": [ - "test" - ], - "crate_types": [ - "bin" - ], - "name": "backtrack", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_backtrack.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": true - }, - { - "kind": [ - "test" - ], - "crate_types": [ - "bin" - ], - "name": "backtrack-utf8bytes", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_backtrack_utf8bytes.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": true - }, - { - "kind": [ - "test" - ], - "crate_types": [ - "bin" - ], - "name": "backtrack-bytes", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_backtrack_bytes.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": true - }, - { - "kind": [ - "test" - ], - "crate_types": [ - "bin" - ], - "name": "crates-regex", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_crates_regex.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": true - } - ], - "features": { - "aho-corasick": [ - "dep:aho-corasick" - ], - "default": [ - "std", - "perf", - "unicode", - "regex-syntax/default" - ], - "memchr": [ - "dep:memchr" - ], - "pattern": [], - "perf": [ - "perf-cache", - "perf-dfa", - "perf-inline", - "perf-literal" - ], - "perf-cache": [], - "perf-dfa": [], - "perf-inline": [], - "perf-literal": [ - "aho-corasick", - "memchr" - ], - "std": [], - "unicode": [ - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment", - "regex-syntax/unicode" - ], - "unicode-age": [ - "regex-syntax/unicode-age" - ], - "unicode-bool": [ - "regex-syntax/unicode-bool" - ], - "unicode-case": [ - "regex-syntax/unicode-case" - ], - "unicode-gencat": [ - "regex-syntax/unicode-gencat" - ], - "unicode-perl": [ - "regex-syntax/unicode-perl" - ], - "unicode-script": [ - "regex-syntax/unicode-script" - ], - "unicode-segment": [ - "regex-syntax/unicode-segment" - ], - "unstable": [ - "pattern" - ], - "use_std": [ - "std" - ] - }, - "manifest_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/Cargo.toml", - "metadata": null, - "publish": null, - "authors": [ - "The Rust Project Developers" - ], - "categories": [ - "text-processing" - ], - "keywords": [], - "readme": "README.md", - "repository": "https://github.com/rust-lang/regex", - "homepage": "https://github.com/rust-lang/regex", - "documentation": "https://docs.rs/regex", - "edition": "2018", - "links": null, - "default_run": null, - "rust_version": null - }, - { - "name": "regex-syntax", - "version": "0.6.29", - "id": "regex-syntax 0.6.29 (registry+https://github.com/rust-lang/crates.io-index)", - "license": "MIT OR Apache-2.0", - "license_file": null, - "description": "A regular expression parser.", - "source": "registry+https://github.com/rust-lang/crates.io-index", - "dependencies": [], - "targets": [ - { - "kind": [ - "lib" - ], - "crate_types": [ - "lib" - ], - "name": "regex-syntax", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-syntax-0.6.29/src/lib.rs", - "edition": "2018", - "doc": true, - "doctest": true, - "test": true - }, - { - "kind": [ - "bench" - ], - "crate_types": [ - "bin" - ], - "name": "bench", - "src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-syntax-0.6.29/benches/bench.rs", - "edition": "2018", - "doc": false, - "doctest": false, - "test": false - } - ], - "features": { - "default": [ - "unicode" - ], - "unicode": [ - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment" - ], - "unicode-age": [], - "unicode-bool": [], - "unicode-case": [], - "unicode-gencat": [], - "unicode-perl": [], - "unicode-script": [], - "unicode-segment": [] - }, - "manifest_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-syntax-0.6.29/Cargo.toml", - "metadata": null, - "publish": null, - "authors": [ - "The Rust Project Developers" - ], - "categories": [], - "keywords": [], - "readme": "README.md", - "repository": "https://github.com/rust-lang/regex", - "homepage": "https://github.com/rust-lang/regex", - "documentation": "https://docs.rs/regex-syntax", - "edition": "2018", - "links": null, - "default_run": null, - "rust_version": null - } - ], - "workspace_members": [ - "ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)" - ], - "resolve": { - "nodes": [ - { - "id": "aho-corasick 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)", - "dependencies": [ - "memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)" - ], - "deps": [ - { - "name": "memchr", - "pkg": "memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dep_kinds": [ - { - "kind": null, - "target": null - } - ] - } - ], - "features": [ - "default", - "std" - ] - }, - { - "id": "la-arena 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dependencies": [], - "deps": [], - "features": [] - }, - { - "id": "memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dependencies": [], - "deps": [], - "features": [ - "default", - "std" - ] - }, - { - "id": "ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)", - "dependencies": [ - "la-arena 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)", - "regex 1.7.3 (registry+https://github.com/rust-lang/crates.io-index)" - ], - "deps": [ - { - "name": "la_arena", - "pkg": "la-arena 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dep_kinds": [ - { - "kind": null, - "target": null - } - ] - }, - { - "name": "ra_playground", - "pkg": "ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)", - "dep_kinds": [ - { - "kind": "dev", - "target": null - } - ] - }, - { - "name": "regex", - "pkg": "regex 1.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "dep_kinds": [ - { - "kind": "dev", - "target": null - } - ] - } - ], - "features": [] - }, - { - "id": "regex 1.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "dependencies": [ - "aho-corasick 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.29 (registry+https://github.com/rust-lang/crates.io-index)" - ], - "deps": [ - { - "name": "aho_corasick", - "pkg": "aho-corasick 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)", - "dep_kinds": [ - { - "kind": null, - "target": null - } - ] - }, - { - "name": "memchr", - "pkg": "memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dep_kinds": [ - { - "kind": null, - "target": null - } - ] - }, - { - "name": "regex_syntax", - "pkg": "regex-syntax 0.6.29 (registry+https://github.com/rust-lang/crates.io-index)", - "dep_kinds": [ - { - "kind": null, - "target": null - } - ] - } - ], - "features": [ - "aho-corasick", - "default", - "memchr", - "perf", - "perf-cache", - "perf-dfa", - "perf-inline", - "perf-literal", - "std", - "unicode", - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment" - ] - }, - { - "id": "regex-syntax 0.6.29 (registry+https://github.com/rust-lang/crates.io-index)", - "dependencies": [], - "deps": [], - "features": [ - "default", - "unicode", - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment" - ] - } - ], - "root": "ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)" - }, - "target_directory": "$ROOT$ra-playground/target", - "version": 1, - "workspace_root": "$ROOT$ra-playground", - "metadata": null -}