diff --git a/cli/compiler.rs b/cli/compiler.rs index b299f0a4c0..3a036a6276 100644 --- a/cli/compiler.rs +++ b/cli/compiler.rs @@ -142,11 +142,18 @@ pub fn compile_async( } } - let r = state - .dir - .fetch_module_meta_data(&module_name, ".", true, true); - let module_meta_data_after_compile = r.unwrap(); - + Ok(()) + }).and_then(move |_| { + state.dir.fetch_module_meta_data_async( + &module_name, + ".", + true, + true, + ).map_err(|e| { + // TODO(95th) Instead of panicking, We could translate this error to Diagnostic. + panic!("{}", e) + }) + }).and_then(move |module_meta_data_after_compile| { // Explicit drop to keep reference alive until future completes. drop(compiling_job); diff --git a/cli/main.rs b/cli/main.rs index c1873ebf1a..cfce2254b3 100644 --- a/cli/main.rs +++ b/cli/main.rs @@ -49,9 +49,9 @@ use crate::worker::Worker; use deno::v8_set_flags; use flags::DenoFlags; use flags::DenoSubcommand; +use futures::future; use futures::lazy; use futures::Future; -use futures::future; use log::{LevelFilter, Metadata, Record}; use std::env; @@ -97,51 +97,48 @@ pub fn print_file_info( worker: Worker, url: &str, ) -> impl Future { - worker::fetch_module_meta_data_and_maybe_compile_async( - &worker.state, - url, - ".", - ).and_then(move |out| { - println!("{} {}", ansi::bold("local:".to_string()), &(out.filename)); + state::fetch_module_meta_data_and_maybe_compile_async(&worker.state, url, ".") + .and_then(move |out| { + println!("{} {}", ansi::bold("local:".to_string()), &(out.filename)); - println!( - "{} {}", - ansi::bold("type:".to_string()), - msg::enum_name_media_type(out.media_type) - ); - - if out.maybe_output_code_filename.is_some() { println!( "{} {}", - ansi::bold("compiled:".to_string()), - out.maybe_output_code_filename.as_ref().unwrap(), + ansi::bold("type:".to_string()), + msg::enum_name_media_type(out.media_type) ); - } - if out.maybe_source_map_filename.is_some() { - println!( - "{} {}", - ansi::bold("map:".to_string()), - out.maybe_source_map_filename.as_ref().unwrap() - ); - } - - let modules = worker.modules.lock().unwrap(); - if let Some(deps) = worker.modules.deps(&out.module_name) { - println!("{}{}", ansi::bold("deps:\n".to_string()), deps.name); - if let Some(ref depsdeps) = deps.deps { - for d in depsdeps { - println!("{}", d); - } + if out.maybe_output_code_filename.is_some() { + println!( + "{} {}", + ansi::bold("compiled:".to_string()), + out.maybe_output_code_filename.as_ref().unwrap(), + ); } - } else { - println!( - "{} cannot retrieve full dependency graph", - ansi::bold("deps:".to_string()), - ); - } - Ok(worker) - }).map_err(|err| println!("{}", err)) + + if out.maybe_source_map_filename.is_some() { + println!( + "{} {}", + ansi::bold("map:".to_string()), + out.maybe_source_map_filename.as_ref().unwrap() + ); + } + + if let Some(deps) = worker.modules.lock().unwrap().deps(&out.module_name) + { + println!("{}{}", ansi::bold("deps:\n".to_string()), deps.name); + if let Some(ref depsdeps) = deps.deps { + for d in depsdeps { + println!("{}", d); + } + } + } else { + println!( + "{} cannot retrieve full dependency graph", + ansi::bold("deps:".to_string()), + ); + } + Ok(worker) + }).map_err(|err| println!("{}", err)) } fn create_worker_and_state( @@ -196,6 +193,7 @@ fn fetch_or_info_command( worker .execute_mod_async(&main_url, true) + .map_err(print_err_and_exit) .and_then(move |()| { if print_info { future::Either::A(print_file_info(worker, &main_module)) @@ -207,7 +205,7 @@ fn fetch_or_info_command( js_check(result); Ok(()) }) - }).map_err(print_err_and_exit) + }) }); tokio_util::run(main_future); } diff --git a/cli/ops.rs b/cli/ops.rs index af1dddcee8..c76983c47c 100644 --- a/cli/ops.rs +++ b/cli/ops.rs @@ -33,11 +33,11 @@ use deno::Op; use deno::PinnedBuf; use flatbuffers::FlatBufferBuilder; use futures; +use futures::future; use futures::Async; use futures::Poll; use futures::Sink; use futures::Stream; -use futures::future; use hyper; use hyper::rt::Future; use rand::{thread_rng, Rng}; @@ -2066,7 +2066,7 @@ fn op_create_worker( Ok( worker .execute_mod_async(&specifier_url, false) - .and_then(move |worker| { + .and_then(move |()| { let mut workers_tl = parent_state.workers.lock().unwrap(); workers_tl.insert(rid, worker.shared()); let builder = &mut FlatBufferBuilder::new(); @@ -2084,10 +2084,8 @@ fn op_create_worker( }, )) }).map_err(|err| match err { - (errors::RustOrJsError::Js(_), _worker) => { - errors::worker_init_failed() - } - (errors::RustOrJsError::Rust(err), _worker) => err, + errors::RustOrJsError::Js(_) => errors::worker_init_failed(), + errors::RustOrJsError::Rust(err) => err, }), ) }).map_err(DenoError::from); diff --git a/cli/state.rs b/cli/state.rs index 34d2b87cd9..d7681fc793 100644 --- a/cli/state.rs +++ b/cli/state.rs @@ -103,7 +103,7 @@ impl ThreadSafeState { } } -fn fetch_module_meta_data_and_maybe_compile_async( +pub fn fetch_module_meta_data_and_maybe_compile_async( state: &ThreadSafeState, specifier: &str, referrer: &str,