This commit is contained in:
Aleksey Kladov 2018-08-12 21:47:27 +03:00
parent 58c3370819
commit acd7552698

View file

@ -78,6 +78,11 @@ fn main_inner() -> Result<()> {
fn initialize(io: &mut Io) -> Result<()> {
loop {
match io.recv()? {
RawMsg::Notification(n) =>
bail!("expected initialize request, got {:?}", n),
RawMsg::Response(res) =>
bail!("expected initialize request, got {:?}", res),
RawMsg::Request(req) => {
let mut req = Some(req);
dispatch::handle_request::<req::Initialize, _>(&mut req, |_params, resp| {
@ -86,33 +91,22 @@ fn initialize(io: &mut Io) -> Result<()> {
io.send(RawMsg::Response(resp));
Ok(())
})?;
match req {
None => {
if let Some(req) = req {
bail!("expected initialize request, got {:?}", req)
}
match io.recv()? {
RawMsg::Notification(n) => {
if n.method != "initialized" {
bail!("expected initialized notification");
}
}
_ => {
bail!("expected initialized notification");
_ => bail!("expected initialized notification"),
}
}
return initialized(io);
}
Some(req) => {
bail!("expected initialize request, got {:?}", req)
}
}
}
RawMsg::Notification(n) => {
bail!("expected initialize request, got {:?}", n)
}
RawMsg::Response(res) => {
bail!("expected initialize request, got {:?}", res)
break;
}
}
}
initialized(io)
}
enum Task {