diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2020-12-10 06:50:47 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-10 06:50:47 +1100 |
commit | 95a6698caca228e8a3ec920a59e1904a09c78eaf (patch) | |
tree | bb7ef4c5a54d78a1915cabc2f36ea64f2fbb6b4e /cli/lsp/analysis.rs | |
parent | b6dd850f71c029a3d82eb10c2528380b0ed4bc71 (diff) |
feat(lsp): support import maps (#8683)
Diffstat (limited to 'cli/lsp/analysis.rs')
-rw-r--r-- | cli/lsp/analysis.rs | 13 |
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()); |