summaryrefslogtreecommitdiff
path: root/cli/lsp/document_source.rs
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2021-10-29 10:56:01 +1100
committerGitHub <noreply@github.com>2021-10-29 10:56:01 +1100
commit34a9ddff091950aee9d89915cd13944259e7d346 (patch)
tree9ccf8c07c34fe5661c90097584eb8b47da3e9ba9 /cli/lsp/document_source.rs
parent74a93fdf63a17de990954399b10eb6dfe7dd1973 (diff)
refactor(lsp): use deno_graph and single document struct (#12535)
Closes #12473
Diffstat (limited to 'cli/lsp/document_source.rs')
-rw-r--r--cli/lsp/document_source.rs75
1 files changed, 0 insertions, 75 deletions
diff --git a/cli/lsp/document_source.rs b/cli/lsp/document_source.rs
deleted file mode 100644
index c2bef884e..000000000
--- a/cli/lsp/document_source.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-use deno_ast::Diagnostic;
-use deno_ast::MediaType;
-use deno_ast::ParsedSource;
-use deno_ast::SourceTextInfo;
-use deno_core::ModuleSpecifier;
-use once_cell::sync::OnceCell;
-use std::sync::Arc;
-
-use super::analysis;
-use super::text::LineIndex;
-
-#[derive(Debug)]
-struct DocumentSourceInner {
- specifier: ModuleSpecifier,
- media_type: MediaType,
- text_info: SourceTextInfo,
- parsed_module: OnceCell<Result<ParsedSource, Diagnostic>>,
- line_index: LineIndex,
-}
-
-/// Immutable information about a document.
-#[derive(Debug, Clone)]
-pub struct DocumentSource {
- inner: Arc<DocumentSourceInner>,
-}
-
-impl DocumentSource {
- pub fn new(
- specifier: &ModuleSpecifier,
- media_type: MediaType,
- text: Arc<String>,
- line_index: LineIndex,
- ) -> Self {
- Self {
- inner: Arc::new(DocumentSourceInner {
- specifier: specifier.clone(),
- media_type,
- text_info: SourceTextInfo::new(text),
- parsed_module: OnceCell::new(),
- line_index,
- }),
- }
- }
-
- pub fn text_info(&self) -> &SourceTextInfo {
- &self.inner.text_info
- }
-
- pub fn line_index(&self) -> &LineIndex {
- &self.inner.line_index
- }
-
- pub fn module(&self) -> Option<&Result<ParsedSource, Diagnostic>> {
- let is_parsable = matches!(
- self.inner.media_type,
- MediaType::JavaScript
- | MediaType::Jsx
- | MediaType::TypeScript
- | MediaType::Tsx
- | MediaType::Dts,
- );
- if is_parsable {
- // lazily parse the module
- Some(self.inner.parsed_module.get_or_init(|| {
- analysis::parse_module(
- &self.inner.specifier,
- self.inner.text_info.clone(),
- self.inner.media_type,
- )
- }))
- } else {
- None
- }
- }
-}