switch to newer cargo-metadata

This commit is contained in:
Aleksey Kladov 2019-01-02 15:27:30 +03:00
parent 63e3afeb68
commit 141ab166cf
3 changed files with 13 additions and 15 deletions

6
Cargo.lock generated
View File

@ -113,7 +113,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "cargo_metadata"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "git+https://github.com/matklad/cargo_metadata.git?branch=well-typed#2f125128c38beeef34e0bfc1bc27861a24753dfe"
dependencies = [
"error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -724,7 +724,7 @@ dependencies = [
name = "ra_lsp_server"
version = "0.1.0"
dependencies = [
"cargo_metadata 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
"cargo_metadata 0.6.4 (git+https://github.com/matklad/cargo_metadata.git?branch=well-typed)",
"crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"drop_bomb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1489,7 +1489,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab"
"checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40"
"checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d"
"checksum cargo_metadata 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e5d1b4d380e1bab994591a24c2bdd1b054f64b60bef483a8c598c7c345bc3bbe"
"checksum cargo_metadata 0.6.4 (git+https://github.com/matklad/cargo_metadata.git?branch=well-typed)" = "<none>"
"checksum cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4a8b715cb4597106ea87c7c84b2f1d452c7492033765df7f32651e66fcf749"
"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4"
"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878"

View File

@ -6,3 +6,4 @@ incremental = true
debug = true
[patch.'crates-io']
cargo_metadata = { git = "https://github.com/matklad/cargo_metadata.git", branch = "well-typed" }

View File

@ -2,7 +2,7 @@ use std::path::{Path, PathBuf};
use cargo_metadata::{metadata_run, CargoOpt};
use ra_syntax::SmolStr;
use rustc_hash::{FxHashMap, FxHashSet};
use rustc_hash::FxHashMap;
use failure::{format_err, bail};
use thread_worker::{WorkerHandle, Worker};
@ -109,11 +109,7 @@ impl CargoWorkspace {
let mut packages = Vec::new();
let mut targets = Vec::new();
let ws_members: FxHashSet<String> = meta
.workspace_members
.into_iter()
.map(|it| it.raw)
.collect();
let ws_members = &meta.workspace_members;
for meta_pkg in meta.packages {
let pkg = Package(packages.len());
@ -121,7 +117,7 @@ impl CargoWorkspace {
pkg_by_id.insert(meta_pkg.id.clone(), pkg);
let mut pkg_data = PackageData {
name: meta_pkg.name.into(),
manifest: PathBuf::from(meta_pkg.manifest_path),
manifest: meta_pkg.manifest_path.clone(),
targets: Vec::new(),
is_member,
dependencies: Vec::new(),
@ -131,7 +127,7 @@ impl CargoWorkspace {
targets.push(TargetData {
pkg,
name: meta_tgt.name.into(),
root: PathBuf::from(meta_tgt.src_path),
root: meta_tgt.src_path.clone(),
kind: TargetKind::new(meta_tgt.kind.as_slice()),
});
pkg_data.targets.push(tgt);
@ -141,10 +137,11 @@ impl CargoWorkspace {
let resolve = meta.resolve.expect("metadata executed with deps");
for node in resolve.nodes {
let source = pkg_by_id[&node.id];
for id in node.dependencies {
let target = pkg_by_id[&id];
let name: SmolStr = packages[target.0].name.replace('-', "_").into();
let dep = PackageDependency { name, pkg: target };
for dep_node in node.deps {
let dep = PackageDependency {
name: dep_node.name.into(),
pkg: pkg_by_id[&dep_node.pkg],
};
packages[source.0].dependencies.push(dep);
}
}