Skip to content

Commit

Permalink
fix(lsp): DRY asset cache lookup logic
Browse files Browse the repository at this point in the history
  • Loading branch information
bnoordhuis committed Feb 8, 2021
1 parent e7a7bf8 commit ccbaedb
Showing 1 changed file with 21 additions and 34 deletions.
55 changes: 21 additions & 34 deletions cli/lsp/language_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
}
}
}

Expand Down Expand Up @@ -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
}
}
_ => {
Expand Down

0 comments on commit ccbaedb

Please sign in to comment.