diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2021-02-06 13:39:01 +0100 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2021-02-08 10:47:32 +0100 |
commit | ccbaedb138038c175f4a62929ccf3ec625683893 (patch) | |
tree | 4fcf70099b57f85a56ea0820516af2bc78b9641f /cli/lsp/language_server.rs | |
parent | e7a7bf8a79ba69247e581f51a9535b5437642a11 (diff) |
fix(lsp): DRY asset cache lookup logic
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 55 |
1 files changed, 21 insertions, 34 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 82ee2a0dd..2050cf2b7 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -138,19 +138,10 @@ impl Inner { ) -> Result<LineIndex, AnyError> { 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<Option<AssetDocument>, 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 } } _ => { |