diff options
Diffstat (limited to 'cli/tools/repl.rs')
-rw-r--r-- | cli/tools/repl.rs | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/cli/tools/repl.rs b/cli/tools/repl.rs index e313d1735..4b3080c63 100644 --- a/cli/tools/repl.rs +++ b/cli/tools/repl.rs @@ -1,12 +1,11 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. -use crate::ast; -use crate::ast::Diagnostic; +use crate::ast::transpile; use crate::ast::ImportsNotUsedAsValues; -use crate::ast::TokenOrComment; use crate::colors; -use crate::media_type::MediaType; use crate::program_state::ProgramState; +use deno_ast::swc::parser::error::SyntaxError; +use deno_ast::swc::parser::token::{Token, Word}; use deno_core::error::AnyError; use deno_core::futures::FutureExt; use deno_core::parking_lot::Mutex; @@ -29,8 +28,6 @@ use std::borrow::Cow; use std::cell::RefCell; use std::path::PathBuf; use std::sync::Arc; -use swc_ecmascript::parser::error::SyntaxError; -use swc_ecmascript::parser::token::{Token, Word}; use tokio::sync::mpsc::channel; use tokio::sync::mpsc::unbounded_channel; use tokio::sync::mpsc::Receiver; @@ -231,8 +228,8 @@ impl Validator for EditorHelper { let mut stack: Vec<Token> = Vec::new(); let mut in_template = false; - for item in ast::lex(ctx.input(), &MediaType::TypeScript) { - if let TokenOrComment::Token(token) = item.inner { + for item in deno_ast::lex(ctx.input(), deno_ast::MediaType::TypeScript) { + if let deno_ast::TokenOrComment::Token(token) = item.inner { match token { Token::BackQuote => in_template = !in_template, Token::LParen @@ -306,16 +303,19 @@ impl Highlighter for EditorHelper { fn highlight<'l>(&self, line: &'l str, _: usize) -> Cow<'l, str> { let mut out_line = String::from(line); - for item in ast::lex(line, &MediaType::TypeScript) { + for item in deno_ast::lex(line, deno_ast::MediaType::TypeScript) { // Adding color adds more bytes to the string, // so an offset is needed to stop spans falling out of sync. let offset = out_line.len() - line.len(); - let span = item.span_as_range(); + let span = std::ops::Range { + start: item.span.lo.0 as usize, + end: item.span.hi.0 as usize, + }; out_line.replace_range( span.start + offset..span.end + offset, &match item.inner { - TokenOrComment::Token(token) => match token { + deno_ast::TokenOrComment::Token(token) => match token { Token::Str { .. } | Token::Template { .. } | Token::BackQuote => { colors::green(&line[span]).to_string() } @@ -342,7 +342,7 @@ impl Highlighter for EditorHelper { }, _ => line[span].to_string(), }, - TokenOrComment::Comment { .. } => { + deno_ast::TokenOrComment::Comment { .. } => { colors::gray(&line[span]).to_string() } }, @@ -536,13 +536,13 @@ impl ReplSession { } Err(err) => { // handle a parsing diagnostic - match err.downcast_ref::<Diagnostic>() { + match err.downcast_ref::<deno_ast::Diagnostic>() { Some(diagnostic) => Ok(EvaluationOutput::Error(format!( "{}: {} at {}:{}", colors::red("parse error"), diagnostic.message, - diagnostic.location.line, - diagnostic.location.col + diagnostic.display_position.line_number, + diagnostic.display_position.column_number, ))), None => Err(err), } @@ -649,11 +649,17 @@ impl ReplSession { &mut self, expression: &str, ) -> Result<Value, AnyError> { - let parsed_module = - crate::ast::parse("repl.ts", expression, &crate::MediaType::TypeScript)?; - - let transpiled_src = parsed_module - .transpile(&crate::ast::EmitOptions { + let parsed_module = deno_ast::parse_module(deno_ast::ParseParams { + specifier: "repl.ts".to_string(), + source: deno_ast::SourceTextInfo::from_string(expression.to_string()), + media_type: deno_ast::MediaType::TypeScript, + capture_tokens: false, + maybe_syntax: None, + })?; + + let transpiled_src = transpile( + &parsed_module, + &crate::ast::EmitOptions { emit_metadata: false, source_map: false, inline_source_map: false, @@ -663,8 +669,9 @@ impl ReplSession { jsx_factory: "React.createElement".into(), jsx_fragment_factory: "React.Fragment".into(), repl_imports: true, - })? - .0; + }, + )? + .0; self .evaluate_expression(&format!( |