diff options
| author | Laurențiu Nicola <lnicola@dend.ro> | 2021-02-01 21:24:09 +0200 |
|---|---|---|
| committer | Laurențiu Nicola <lnicola@dend.ro> | 2021-02-01 21:24:09 +0200 |
| commit | 7ed80bae920bf1851ef07ea5742fb16225353d7f (patch) | |
| tree | 06795400e093c04f1b4c02c27403ad85b00f590d | |
| parent | c0d3e315e33e8d95d064bfe2c276858dd802fd0d (diff) | |
| download | rust-7ed80bae920bf1851ef07ea5742fb16225353d7f.tar.gz rust-7ed80bae920bf1851ef07ea5742fb16225353d7f.zip | |
Reap proc macro server instances
| -rw-r--r-- | Cargo.lock | 1 | ||||
| -rw-r--r-- | crates/proc_macro_api/Cargo.toml | 1 | ||||
| -rw-r--r-- | crates/proc_macro_api/src/process.rs | 11 |
3 files changed, 5 insertions, 8 deletions
diff --git a/Cargo.lock b/Cargo.lock index 7f89fc580b0..29ecae98b3b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1158,6 +1158,7 @@ dependencies = [ "log", "serde", "serde_json", + "stdx", "tt", ] diff --git a/crates/proc_macro_api/Cargo.toml b/crates/proc_macro_api/Cargo.toml index 078568cb2e2..f0972622303 100644 --- a/crates/proc_macro_api/Cargo.toml +++ b/crates/proc_macro_api/Cargo.toml @@ -18,3 +18,4 @@ jod-thread = "0.1.1" tt = { path = "../tt", version = "0.0.0" } base_db = { path = "../base_db", version = "0.0.0" } +stdx = { path = "../stdx", version = "0.0.0" } diff --git a/crates/proc_macro_api/src/process.rs b/crates/proc_macro_api/src/process.rs index 6d6ab888868..3ce851fe82c 100644 --- a/crates/proc_macro_api/src/process.rs +++ b/crates/proc_macro_api/src/process.rs @@ -10,6 +10,7 @@ use std::{ }; use crossbeam_channel::{bounded, Receiver, Sender}; +use stdx::JodChild; use crate::{ msg::{ErrorCode, Message, Request, Response, ResponseError}, @@ -116,13 +117,7 @@ struct Task { } struct Process { - child: Child, -} - -impl Drop for Process { - fn drop(&mut self) { - let _ = self.child.kill(); - } + child: JodChild, } impl Process { @@ -131,7 +126,7 @@ impl Process { args: impl IntoIterator<Item = impl AsRef<OsStr>>, ) -> io::Result<Process> { let args: Vec<OsString> = args.into_iter().map(|s| s.as_ref().into()).collect(); - let child = mk_child(&path, &args)?; + let child = JodChild(mk_child(&path, &args)?); Ok(Process { child }) } |
