summaryrefslogtreecommitdiff
path: root/cli/lsp/sources.rs
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2020-12-10 11:12:46 +1100
committerGitHub <noreply@github.com>2020-12-10 11:12:46 +1100
commit1a72c9ba23208f7236e5784011bc15640e50fe0b (patch)
tree48e206e1e231592d1343a014a7add7157ff5cbab /cli/lsp/sources.rs
parentde65312b7fca46ce5fe4d8e61eb5d17f599df4e1 (diff)
fix(lsp): only resolve sources with supported schemas (#8696)
Fixes #8695
Diffstat (limited to 'cli/lsp/sources.rs')
-rw-r--r--cli/lsp/sources.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/cli/lsp/sources.rs b/cli/lsp/sources.rs
index c6a15461f..09b0a4cc8 100644
--- a/cli/lsp/sources.rs
+++ b/cli/lsp/sources.rs
@@ -5,6 +5,7 @@ use super::text;
use crate::file_fetcher::get_source_from_bytes;
use crate::file_fetcher::map_content_type;
+use crate::file_fetcher::SUPPORTED_SCHEMES;
use crate::http_cache;
use crate::http_cache::HttpCache;
use crate::import_map::ImportMap;
@@ -279,7 +280,12 @@ impl Sources {
&mut self,
specifier: &ModuleSpecifier,
) -> Option<ModuleSpecifier> {
- if specifier.as_url().scheme() == "file" {
+ let scheme = specifier.as_url().scheme();
+ if !SUPPORTED_SCHEMES.contains(&scheme) {
+ return None;
+ }
+
+ if scheme == "file" {
if let Ok(path) = specifier.as_url().to_file_path() {
if path.is_file() {
return Some(specifier.clone());
@@ -377,4 +383,13 @@ mod tests {
let actual = actual.unwrap();
assert_eq!(actual, 28);
}
+
+ #[test]
+ fn test_sources_resolve_specifier_non_supported_schema() {
+ let (mut sources, _) = setup();
+ let specifier = ModuleSpecifier::resolve_url("foo://a/b/c.ts")
+ .expect("could not create specifier");
+ let actual = sources.resolve_specifier(&specifier);
+ assert!(actual.is_none());
+ }
}