summaryrefslogtreecommitdiff
path: root/cli/tools/repl.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tools/repl.rs')
-rw-r--r--cli/tools/repl.rs51
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!(