summaryrefslogtreecommitdiff
path: root/cli/lsp/documents.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/documents.rs')
-rw-r--r--cli/lsp/documents.rs48
1 files changed, 44 insertions, 4 deletions
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs
index c2b207e14..4f961715d 100644
--- a/cli/lsp/documents.rs
+++ b/cli/lsp/documents.rs
@@ -6,7 +6,6 @@ use super::tsc;
use crate::media_type::MediaType;
-use deno_core::error::anyhow;
use deno_core::error::custom_error;
use deno_core::error::AnyError;
use deno_core::error::Context;
@@ -28,21 +27,24 @@ pub enum LanguageId {
Json,
JsonC,
Markdown,
+ Unknown,
}
impl FromStr for LanguageId {
type Err = AnyError;
- fn from_str(s: &str) -> Result<Self, AnyError> {
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"javascript" => Ok(Self::JavaScript),
"javascriptreact" => Ok(Self::Jsx),
+ "jsx" => Ok(Self::Jsx),
"typescript" => Ok(Self::TypeScript),
"typescriptreact" => Ok(Self::Tsx),
+ "tsx" => Ok(Self::Tsx),
"json" => Ok(Self::Json),
"jsonc" => Ok(Self::JsonC),
"markdown" => Ok(Self::Markdown),
- _ => Err(anyhow!("Unsupported language id: {}", s)),
+ _ => Ok(Self::Unknown),
}
}
}
@@ -57,6 +59,7 @@ impl<'a> From<&'a LanguageId> for MediaType {
LanguageId::Markdown => MediaType::Unknown,
LanguageId::Tsx => MediaType::Tsx,
LanguageId::TypeScript => MediaType::TypeScript,
+ LanguageId::Unknown => MediaType::Unknown,
}
}
}
@@ -449,6 +452,35 @@ mod tests {
use lspower::lsp;
#[test]
+ fn test_language_id() {
+ assert_eq!(
+ "javascript".parse::<LanguageId>().unwrap(),
+ LanguageId::JavaScript
+ );
+ assert_eq!(
+ "javascriptreact".parse::<LanguageId>().unwrap(),
+ LanguageId::Jsx
+ );
+ assert_eq!("jsx".parse::<LanguageId>().unwrap(), LanguageId::Jsx);
+ assert_eq!(
+ "typescript".parse::<LanguageId>().unwrap(),
+ LanguageId::TypeScript
+ );
+ assert_eq!(
+ "typescriptreact".parse::<LanguageId>().unwrap(),
+ LanguageId::Tsx
+ );
+ assert_eq!("tsx".parse::<LanguageId>().unwrap(), LanguageId::Tsx);
+ assert_eq!("json".parse::<LanguageId>().unwrap(), LanguageId::Json);
+ assert_eq!("jsonc".parse::<LanguageId>().unwrap(), LanguageId::JsonC);
+ assert_eq!(
+ "markdown".parse::<LanguageId>().unwrap(),
+ LanguageId::Markdown
+ );
+ assert_eq!("rust".parse::<LanguageId>().unwrap(), LanguageId::Unknown);
+ }
+
+ #[test]
fn test_document_cache_contains() {
let mut document_cache = DocumentCache::default();
let specifier = resolve_url("file:///a/b.ts").unwrap();
@@ -543,10 +575,18 @@ mod tests {
document_cache.open(
specifier.clone(),
1,
- LanguageId::TypeScript,
+ "typescript".parse().unwrap(),
"console.log(\"hello world\");\n",
);
assert!(document_cache.is_diagnosable(&specifier));
+ let specifier = resolve_url("file:///a/file.rs").unwrap();
+ document_cache.open(
+ specifier.clone(),
+ 1,
+ "rust".parse().unwrap(),
+ "pub mod a;",
+ );
+ assert!(!document_cache.is_diagnosable(&specifier));
let specifier =
resolve_url("asset:///lib.es2015.symbol.wellknown.d.ts").unwrap();
assert!(document_cache.is_diagnosable(&specifier));