Skip to content
This repository has been archived by the owner on Dec 29, 2022. It is now read-only.

Update cargo #1663

Merged
merged 1 commit into from
Apr 19, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 13 additions & 24 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ rls-vfs = "0.8"
rls-ipc = { version = "0.1.0", path = "rls-ipc", optional = true }

anyhow = "1.0.26"
cargo = { git = "https://github.com/rust-lang/cargo", rev = "bda50510d1daf6e9c53ad6ccf603da6e0fa8103f" }
cargo = { git = "https://github.com/rust-lang/cargo", rev = "5b620dc044e8999e6bc0193f9e037c4618519547" }
cargo_metadata = "0.8"
clippy_lints = { git = "https://github.com/rust-lang/rust-clippy", rev = "d236b30a1d638340aad8345fa2946cfe9543dcf0", optional = true }
env_logger = "0.7"
Expand Down
8 changes: 4 additions & 4 deletions rls/src/build/cargo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -356,19 +356,19 @@ impl Executor for RlsExecutor {
/// unit of work (may still be modified for runtime-known dependencies, when
/// the work is actually executed). This is called even for a target that
/// is fresh and won't be compiled.
fn init<'a>(&self, cx: &Context<'a, '_>, unit: &Unit<'a>) {
fn init<'a>(&self, cx: &Context<'a, '_>, unit: &Unit) {
let mut compilation_cx = self.compilation_cx.lock().unwrap();
let plan = compilation_cx
.build_plan
.as_cargo_mut()
.expect("build plan should be properly initialized before running Cargo");

let only_primary = |unit: Unit<'_>| self.is_primary_package(unit.pkg.package_id());
let only_primary = |unit: &Unit| self.is_primary_package(unit.pkg.package_id());

plan.emplace_dep_with_filter(*unit, cx, &only_primary);
plan.emplace_dep_with_filter(unit, cx, &only_primary);
}

fn force_rebuild(&self, unit: &Unit<'_>) -> bool {
fn force_rebuild(&self, unit: &Unit) -> bool {
// We need to force rebuild every package in the
// workspace, even if it's not dirty at a time, to cache compiler
// invocations in the build plan.
Expand Down
20 changes: 10 additions & 10 deletions rls/src/build/cargo_plan.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,11 +127,11 @@ impl CargoPlan {
/// out by the `filter` closure.
pub(crate) fn emplace_dep_with_filter<'a, Filter>(
&mut self,
unit: Unit<'a>,
unit: &Unit,
cx: &Context<'a, '_>,
filter: &Filter,
) where
Filter: Fn(Unit<'a>) -> bool,
Filter: Fn(&Unit) -> bool,
{
if !filter(unit) {
return;
Expand All @@ -150,13 +150,13 @@ impl CargoPlan {
self.units.insert(key.clone(), unit.into());

// Fetch and insert relevant unit dependencies to the forward dep graph.
let deps = cx.unit_deps(&unit);
let deps = cx.unit_deps(unit);
let dep_keys: HashSet<UnitKey> = deps
.iter()
.map(|dep| dep.unit)
.map(|dep| &dep.unit)
// We might not want certain deps to be added transitively (e.g.
// when creating only a sub-dep-graph, limiting the scope).
.filter(|unit| filter(*unit))
.filter(|unit| filter(unit))
.map(UnitKey::from)
// Units can depend on others with different Targets or Profiles
// (e.g. different `run_custom_build`) despite having the same UnitKey.
Expand All @@ -175,7 +175,7 @@ impl CargoPlan {

// Recursively process other remaining forward dependencies.
for dep in deps {
self.emplace_dep_with_filter(dep.unit, cx, filter);
self.emplace_dep_with_filter(&dep.unit, cx, filter);
}
}

Expand Down Expand Up @@ -464,8 +464,8 @@ impl PackageMap {
}
}

impl From<Unit<'_>> for UnitKey {
fn from(unit: Unit<'_>) -> UnitKey {
impl From<&Unit> for UnitKey {
fn from(unit: &Unit) -> UnitKey {
UnitKey { pkg_id: unit.pkg.package_id(), target: unit.target.clone(), mode: unit.mode }
}
}
Expand All @@ -480,8 +480,8 @@ pub(crate) struct OwnedUnit {
pub(crate) mode: CompileMode,
}

impl From<Unit<'_>> for OwnedUnit {
fn from(unit: Unit<'_>) -> OwnedUnit {
impl From<&Unit> for OwnedUnit {
fn from(unit: &Unit) -> OwnedUnit {
OwnedUnit {
id: unit.pkg.package_id().to_owned(),
target: unit.target.clone(),
Expand Down