diff options
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r-- | cli/lsp/tsc.rs | 72 |
1 files changed, 30 insertions, 42 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs index 63c08331d..fbc712a56 100644 --- a/cli/lsp/tsc.rs +++ b/cli/lsp/tsc.rs @@ -3,7 +3,6 @@ use super::analysis::CodeActionData; use super::code_lens; use super::config; -use super::config::ConfigTree; use super::documents::AssetOrDocument; use super::documents::DocumentsFilter; use super::language_server; @@ -222,7 +221,6 @@ pub struct TsServer { sender: mpsc::UnboundedSender<Request>, receiver: Mutex<Option<mpsc::UnboundedReceiver<Request>>>, specifier_map: Arc<TscSpecifierMap>, - config_tree: Arc<ConfigTree>, inspector_server: Mutex<Option<Arc<InspectorServer>>>, } @@ -240,11 +238,7 @@ impl std::fmt::Debug for TsServer { } impl TsServer { - pub fn new( - performance: Arc<Performance>, - cache: Arc<dyn HttpCache>, - config_tree: Arc<ConfigTree>, - ) -> Self { + pub fn new(performance: Arc<Performance>, cache: Arc<dyn HttpCache>) -> Self { let (tx, request_rx) = mpsc::unbounded_channel::<Request>(); Self { performance, @@ -252,7 +246,6 @@ impl TsServer { sender: tx, receiver: Mutex::new(Some(request_rx)), specifier_map: Arc::new(TscSpecifierMap::new()), - config_tree, inspector_server: Mutex::new(None), } } @@ -275,7 +268,6 @@ impl TsServer { let performance = self.performance.clone(); let cache = self.cache.clone(); let specifier_map = self.specifier_map.clone(); - let config_tree = self.config_tree.clone(); let _join_handle = thread::spawn(move || { run_tsc_thread( receiver, @@ -283,7 +275,6 @@ impl TsServer { cache.clone(), specifier_map.clone(), maybe_inspector_server, - config_tree, ) }); } @@ -3884,7 +3875,6 @@ struct State { response: Option<Response>, state_snapshot: Arc<StateSnapshot>, specifier_map: Arc<TscSpecifierMap>, - config_tree: Arc<ConfigTree>, token: CancellationToken, } @@ -3892,7 +3882,6 @@ impl State { fn new( state_snapshot: Arc<StateSnapshot>, specifier_map: Arc<TscSpecifierMap>, - config_tree: Arc<ConfigTree>, performance: Arc<Performance>, ) -> Self { Self { @@ -3901,7 +3890,6 @@ impl State { response: None, state_snapshot, specifier_map, - config_tree, token: Default::default(), } } @@ -4120,7 +4108,7 @@ fn op_script_version( fn op_ts_config(state: &mut OpState) -> serde_json::Value { let state = state.borrow_mut::<State>(); let mark = state.performance.mark("tsc.op.op_ts_config"); - let r = json!(state.config_tree.root_ts_config()); + let r = json!(state.state_snapshot.config.tree.root_ts_config()); state.performance.measure(mark); r } @@ -4141,19 +4129,13 @@ fn run_tsc_thread( cache: Arc<dyn HttpCache>, specifier_map: Arc<TscSpecifierMap>, maybe_inspector_server: Option<Arc<InspectorServer>>, - config_tree: Arc<ConfigTree>, ) { let has_inspector_server = maybe_inspector_server.is_some(); // Create and setup a JsRuntime based on a snapshot. It is expected that the // supplied snapshot is an isolate that contains the TypeScript language // server. let mut tsc_runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![deno_tsc::init_ops( - performance, - cache, - specifier_map, - config_tree, - )], + extensions: vec![deno_tsc::init_ops(performance, cache, specifier_map)], startup_snapshot: Some(tsc::compiler_snapshot()), inspector: maybe_inspector_server.is_some(), ..Default::default() @@ -4227,7 +4209,6 @@ deno_core::extension!(deno_tsc, performance: Arc<Performance>, cache: Arc<dyn HttpCache>, specifier_map: Arc<TscSpecifierMap>, - config_tree: Arc<ConfigTree>, }, state = |state, options| { state.put(State::new( @@ -4239,7 +4220,6 @@ deno_core::extension!(deno_tsc, npm: None, }), options.specifier_map, - options.config_tree, options.performance, )); }, @@ -4507,7 +4487,10 @@ impl UserPreferences { language_settings.preferences.use_aliases_for_renames, ), // Only use workspace settings for quote style if there's no `deno.json`. - quote_preference: if config.tree.has_config_file_for_specifier(specifier) + quote_preference: if config + .tree + .config_file_for_specifier(specifier) + .is_some() { base_preferences.quote_preference } else { @@ -4650,12 +4633,14 @@ fn request( #[cfg(test)] mod tests { + use super::*; use crate::cache::GlobalHttpCache; use crate::cache::HttpCache; use crate::cache::RealDenoCacheEnv; use crate::http_util::HeadersMap; use crate::lsp::cache::CacheMetadata; + use crate::lsp::config::ConfigSnapshot; use crate::lsp::config::WorkspaceSettings; use crate::lsp::documents::Documents; use crate::lsp::documents::LanguageId; @@ -4664,9 +4649,10 @@ mod tests { use std::path::Path; use test_util::TempDir; - fn mock_state_snapshot( + async fn mock_state_snapshot( fixtures: &[(&str, &str, i32, LanguageId)], location: &Path, + ts_config: Value, ) -> StateSnapshot { let cache = Arc::new(GlobalHttpCache::new( location.to_path_buf(), @@ -4683,11 +4669,26 @@ mod tests { (*source).into(), ); } + let mut config = ConfigSnapshot::default(); + config + .tree + .inject_config_file( + deno_config::ConfigFile::new( + &json!({ + "compilerOptions": ts_config, + }) + .to_string(), + resolve_url("file:///deno.json").unwrap(), + &deno_config::ParseOptions::default(), + ) + .unwrap(), + ) + .await; StateSnapshot { documents, assets: Default::default(), cache_metadata: CacheMetadata::new(cache), - config: Default::default(), + config: Arc::new(config), npm: None, } } @@ -4700,23 +4701,10 @@ mod tests { let location = temp_dir.path().join("deps").to_path_buf(); let cache = Arc::new(GlobalHttpCache::new(location.clone(), RealDenoCacheEnv)); - let snapshot = Arc::new(mock_state_snapshot(sources, &location)); + let snapshot = + Arc::new(mock_state_snapshot(sources, &location, config).await); let performance = Arc::new(Performance::default()); - let config_tree = Arc::new(ConfigTree::default()); - config_tree - .inject_config_file( - deno_config::ConfigFile::new( - &json!({ - "compilerOptions": config, - }) - .to_string(), - resolve_url("file:///deno.json").unwrap(), - &deno_config::ParseOptions::default(), - ) - .unwrap(), - ) - .await; - let ts_server = TsServer::new(performance, cache.clone(), config_tree); + let ts_server = TsServer::new(performance, cache.clone()); ts_server.start(None); (ts_server, snapshot, cache) } |