diff --git a/crates/ra_proc_macro_srv/src/cli.rs b/crates/ra_proc_macro_srv/src/cli.rs index 5f1f3ba3c7d8..7282e5b9b7a9 100644 --- a/crates/ra_proc_macro_srv/src/cli.rs +++ b/crates/ra_proc_macro_srv/src/cli.rs @@ -4,17 +4,8 @@ use crate::{expand_task, list_macros}; use ra_proc_macro::msg::{self, Message}; use std::io; -pub fn run() { - loop { - let req = match read_request() { - Err(err) => { - eprintln!("Read message error on ra_proc_macro_srv: {}", err); - continue; - } - Ok(None) => continue, - Ok(Some(req)) => req, - }; - +pub fn run() -> io::Result<()> { + while let Some(req) = read_request()? { let res = match req { msg::Request::ListMacro(task) => Ok(msg::Response::ListMacro(list_macros(&task))), msg::Request::ExpansionMacro(task) => { @@ -33,6 +24,8 @@ pub fn run() { eprintln!("Write message error: {}", err); } } + + Ok(()) } fn read_request() -> io::Result> { diff --git a/crates/rust-analyzer/src/bin/main.rs b/crates/rust-analyzer/src/bin/main.rs index e8d5dad6577c..22a84b50c099 100644 --- a/crates/rust-analyzer/src/bin/main.rs +++ b/crates/rust-analyzer/src/bin/main.rs @@ -66,7 +66,7 @@ fn setup_logging() -> Result<()> { } fn run_proc_macro_srv() -> Result<()> { - ra_proc_macro_srv::cli::run(); + ra_proc_macro_srv::cli::run()?; Ok(()) }