Skip to content

Commit beb8fcb

Browse files
committed
Auto merge of #6893 - ehuss:executor-lifetime, r=alexcrichton
Add explicit lifetimes to Executor::init. Since the unit interner was added in #6867, I am getting a strange borrow check error compiling RLS with the latest Cargo (that is, linking rls with the new cargo). Adding explicit lifetimes to the `Executor::init` function seems to fix the problem. I don't 100% understand the error, because none of the relevant function or type signatures changed in that PR. The only thing that gives me a clue is [this change](https://github.com/rust-lang/cargo/pull/6867/files#diff-0bb62cb712c0811a17d7a726e068bf65L112) to `BuildPlan::add` which does something similar, but that is not directly called by RLS. The error looks like this: ``` error[E0623]: lifetime mismatch --> rls/src/build/cargo_plan.rs:149:24 | 126 | unit: &Unit<'_>, | -------- these two types are declared with different lifetimes... 127 | cx: &Context<'_, '_>, | --------------- ... 149 | let units = cx.dep_targets(unit); | ^^^^^^^^^^^ ...but data from `unit` flows into `cx` here ``` I generally don't like making changes if I don't understand them, but I'm a little stumped here how this is happening even though everything is defined with the same (`'a`) lifetime. This unblocks updating RLS to the latest Cargo.
2 parents af1fcb3 + 1212c91 commit beb8fcb

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/cargo/core/compiler/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ pub trait Executor: Send + Sync + 'static {
6060
/// Called after a rustc process invocation is prepared up-front for a given
6161
/// unit of work (may still be modified for runtime-known dependencies, when
6262
/// the work is actually executed).
63-
fn init(&self, _cx: &Context<'_, '_>, _unit: &Unit<'_>) {}
63+
fn init<'a, 'cfg>(&self, _cx: &Context<'a, 'cfg>, _unit: &Unit<'a>) {}
6464

6565
/// In case of an `Err`, Cargo will not continue with the build process for
6666
/// this package.

0 commit comments

Comments
 (0)