summaryrefslogtreecommitdiff
path: root/cli/lsp/analysis.rs
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2020-12-10 06:50:47 +1100
committerGitHub <noreply@github.com>2020-12-10 06:50:47 +1100
commit95a6698caca228e8a3ec920a59e1904a09c78eaf (patch)
treebb7ef4c5a54d78a1915cabc2f36ea64f2fbb6b4e /cli/lsp/analysis.rs
parentb6dd850f71c029a3d82eb10c2528380b0ed4bc71 (diff)
feat(lsp): support import maps (#8683)
Diffstat (limited to 'cli/lsp/analysis.rs')
-rw-r--r--cli/lsp/analysis.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/cli/lsp/analysis.rs b/cli/lsp/analysis.rs
index 370b41c45..95e21ed9a 100644
--- a/cli/lsp/analysis.rs
+++ b/cli/lsp/analysis.rs
@@ -13,9 +13,10 @@ use deno_core::ModuleSpecifier;
use deno_lint::rules;
use lsp_types::Position;
use lsp_types::Range;
-use std::cell::RefCell;
use std::collections::HashMap;
use std::rc::Rc;
+use std::sync::Arc;
+use std::sync::RwLock;
/// Category of self-generated diagnostic messages (those not coming from)
/// TypeScript.
@@ -113,11 +114,13 @@ pub enum ResolvedImport {
pub fn resolve_import(
specifier: &str,
referrer: &ModuleSpecifier,
- maybe_import_map: Option<Rc<RefCell<ImportMap>>>,
+ maybe_import_map: Option<Arc<RwLock<ImportMap>>>,
) -> ResolvedImport {
let maybe_mapped = if let Some(import_map) = maybe_import_map {
- if let Ok(maybe_specifier) =
- import_map.borrow().resolve(specifier, referrer.as_str())
+ if let Ok(maybe_specifier) = import_map
+ .read()
+ .unwrap()
+ .resolve(specifier, referrer.as_str())
{
maybe_specifier
} else {
@@ -159,7 +162,7 @@ pub fn analyze_dependencies(
specifier: &ModuleSpecifier,
source: &str,
media_type: &MediaType,
- maybe_import_map: Option<Rc<RefCell<ImportMap>>>,
+ maybe_import_map: Option<Arc<RwLock<ImportMap>>>,
) -> Option<(HashMap<String, Dependency>, Option<ResolvedImport>)> {
let specifier_str = specifier.to_string();
let source_map = Rc::new(swc_common::SourceMap::default());