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

Commit 1fdec95

Browse files
committed
Set cwd in rustc builds
Fixes test_hover_after_src_line_change
1 parent a8cb3b2 commit 1fdec95

File tree

2 files changed

+12
-28
lines changed

2 files changed

+12
-28
lines changed

src/build/plan.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -331,17 +331,13 @@ impl JobQueue {
331331
// to Cargo (which we do currently) in `prepare_work`
332332
assert!(self.0.is_empty() == false);
333333

334-
let build_dir = internals
335-
.compilation_cx
336-
.lock()
337-
.unwrap()
338-
.build_dir
339-
.clone()
340-
.unwrap();
341-
342334
let mut compiler_messages = vec![];
343335
let mut analyses = vec![];
344-
let mut cwd = PathBuf::from(".");
336+
let (build_dir, mut cwd) = {
337+
let comp_cx = internals.compilation_cx.lock().unwrap();
338+
(comp_cx.build_dir.clone().unwrap(), comp_cx.cwd.clone())
339+
};
340+
345341
// Go through cached compiler invocations sequentially, collecting each
346342
// invocation's compiler messages for diagnostics and analysis data
347343
while let Some(job) = self.dequeue() {
@@ -358,22 +354,26 @@ impl JobQueue {
358354
&internals.vfs,
359355
&args,
360356
job.get_envs(),
361-
None,
357+
cwd.as_ref().map(|p| &**p),
362358
&build_dir,
363359
internals.config.clone(),
364360
internals.env_lock.as_facade(),
365361
) {
366362
BuildResult::Success(c, mut messages, mut analysis) => {
367363
compiler_messages.append(&mut messages);
368364
analyses.append(&mut analysis);
369-
cwd = c;
365+
cwd = Some(c);
370366
}
371367
BuildResult::Err => return BuildResult::Err,
372368
_ => {}
373369
}
374370
}
375371

376-
BuildResult::Success(cwd, compiler_messages, analyses)
372+
BuildResult::Success(
373+
cwd.unwrap_or_else(|| PathBuf::from(".")),
374+
compiler_messages,
375+
analyses,
376+
)
377377
}
378378
}
379379

src/test/mod.rs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -322,22 +322,6 @@ fn test_hover_after_src_line_change() {
322322
ls_server::ServerStateChange::Continue
323323
);
324324

325-
{
326-
// for some reason i get publishDiagnostics that aren't for the test project:
327-
// "diagnostics":[{"code":"E0463","message":"can't find crate for `cargo`" ...
328-
// for file: rls/src/main.rs"
329-
//
330-
// Ignore as probably not relevant to the test, but this seems to be a bug
331-
wait_for_n_results!(3, results);
332-
results.lock().unwrap().retain(|msg| {
333-
if msg.contains("publishDiagnostics") {
334-
error!("Unexpected server->client: `{}`", msg);
335-
return false;
336-
}
337-
true
338-
});
339-
}
340-
341325
expect_messages(
342326
results.clone(),
343327
&[

0 commit comments

Comments
 (0)