Skip to content

Commit 141ab16

Browse files
committed
switch to newer cargo-metadata
1 parent 63e3afe commit 141ab16

File tree

3 files changed

+13
-15
lines changed

3 files changed

+13
-15
lines changed

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ incremental = true
66
debug = true
77

88
[patch.'crates-io']
9+
cargo_metadata = { git = "https://github.com/matklad/cargo_metadata.git", branch = "well-typed" }

crates/ra_lsp_server/src/project_model.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::path::{Path, PathBuf};
22

33
use cargo_metadata::{metadata_run, CargoOpt};
44
use ra_syntax::SmolStr;
5-
use rustc_hash::{FxHashMap, FxHashSet};
5+
use rustc_hash::FxHashMap;
66
use failure::{format_err, bail};
77
use thread_worker::{WorkerHandle, Worker};
88

@@ -109,19 +109,15 @@ impl CargoWorkspace {
109109
let mut packages = Vec::new();
110110
let mut targets = Vec::new();
111111

112-
let ws_members: FxHashSet<String> = meta
113-
.workspace_members
114-
.into_iter()
115-
.map(|it| it.raw)
116-
.collect();
112+
let ws_members = &meta.workspace_members;
117113

118114
for meta_pkg in meta.packages {
119115
let pkg = Package(packages.len());
120116
let is_member = ws_members.contains(&meta_pkg.id);
121117
pkg_by_id.insert(meta_pkg.id.clone(), pkg);
122118
let mut pkg_data = PackageData {
123119
name: meta_pkg.name.into(),
124-
manifest: PathBuf::from(meta_pkg.manifest_path),
120+
manifest: meta_pkg.manifest_path.clone(),
125121
targets: Vec::new(),
126122
is_member,
127123
dependencies: Vec::new(),
@@ -131,7 +127,7 @@ impl CargoWorkspace {
131127
targets.push(TargetData {
132128
pkg,
133129
name: meta_tgt.name.into(),
134-
root: PathBuf::from(meta_tgt.src_path),
130+
root: meta_tgt.src_path.clone(),
135131
kind: TargetKind::new(meta_tgt.kind.as_slice()),
136132
});
137133
pkg_data.targets.push(tgt);
@@ -141,10 +137,11 @@ impl CargoWorkspace {
141137
let resolve = meta.resolve.expect("metadata executed with deps");
142138
for node in resolve.nodes {
143139
let source = pkg_by_id[&node.id];
144-
for id in node.dependencies {
145-
let target = pkg_by_id[&id];
146-
let name: SmolStr = packages[target.0].name.replace('-', "_").into();
147-
let dep = PackageDependency { name, pkg: target };
140+
for dep_node in node.deps {
141+
let dep = PackageDependency {
142+
name: dep_node.name.into(),
143+
pkg: pkg_by_id[&dep_node.pkg],
144+
};
148145
packages[source.0].dependencies.push(dep);
149146
}
150147
}

0 commit comments

Comments
 (0)