-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add explicit lifetimes to Executor::init. #6893
Conversation
r? @nrc (rust_highfive has picked a reviewer for you, use r? to override) |
@bors: r+ Ah yeah this is expected in the sense that some methods on Context got more restrictive in terms of lifetime requirements, and dep_targets was one of them. This represents what we are actually handing executors and makes sense it's be required to call further methods |
📌 Commit 1212c91 has been approved by |
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.
☀️ Test successful - checks-travis, status-appveyor |
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 toBuildPlan::add
which does something similar, but that is not directly called by RLS.The error looks like this:
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.