From ccbaedb138038c175f4a62929ccf3ec625683893 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sat, 6 Feb 2021 13:39:01 +0100 Subject: [PATCH] fix(lsp): DRY asset cache lookup logic --- cli/lsp/language_server.rs | 55 +++++++++++++++----------------------- 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 82ee2a0dd60893..2050cf2b738fef 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -138,19 +138,10 @@ impl Inner { ) -> Result { let mark = self.performance.mark("get_line_index"); let result = if specifier.as_url().scheme() == "asset" { - let maybe_asset = self.assets.get(&specifier).cloned(); - if let Some(maybe_asset) = maybe_asset { - if let Some(asset) = maybe_asset { - Ok(asset.line_index) - } else { - Err(anyhow!("asset is missing: {}", specifier)) - } + if let Some(asset) = self.get_asset(&specifier).await? { + Ok(asset.line_index) } else { - if let Some(asset) = self.get_asset(&specifier).await? { - Ok(asset.line_index) - } else { - Err(anyhow!("asset is missing: {}", specifier)) - } + Err(anyhow!("asset is missing: {}", specifier)) } } else if let Some(line_index) = self.documents.line_index(&specifier) { Ok(line_index) @@ -509,11 +500,16 @@ impl Inner { &mut self, specifier: &ModuleSpecifier, ) -> Result, AnyError> { - let mut state_snapshot = self.snapshot(); - let maybe_asset = - tsc::get_asset(&specifier, &self.ts_server, &mut state_snapshot).await?; - self.assets.insert(specifier.clone(), maybe_asset.clone()); - Ok(maybe_asset) + if let Some(maybe_asset) = self.assets.get(specifier) { + return Ok(maybe_asset.clone()); + } else { + let mut state_snapshot = self.snapshot(); + let maybe_asset = + tsc::get_asset(&specifier, &self.ts_server, &mut state_snapshot) + .await?; + self.assets.insert(specifier.clone(), maybe_asset.clone()); + Ok(maybe_asset) + } } } @@ -1772,24 +1768,15 @@ impl Inner { } else { match url.scheme() { "asset" => { - let maybe_asset = self.assets.get(&specifier).cloned(); - if let Some(maybe_asset) = maybe_asset { - if let Some(asset) = maybe_asset { - Some(asset.text) - } else { - None - } + if let Some(asset) = self + .get_asset(&specifier) + .await + .map_err(|_| LspError::internal_error())? + { + Some(asset.text) } else { - if let Some(asset) = self - .get_asset(&specifier) - .await - .map_err(|_| LspError::internal_error())? - { - Some(asset.text) - } else { - error!("Missing asset: {}", specifier); - None - } + error!("Missing asset: {}", specifier); + None } } _ => {