summaryrefslogtreecommitdiff
path: root/cli/tools/repl
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tools/repl')
-rw-r--r--cli/tools/repl/editor.rs8
-rw-r--r--cli/tools/repl/session.rs5
2 files changed, 11 insertions, 2 deletions
diff --git a/cli/tools/repl/editor.rs b/cli/tools/repl/editor.rs
index fbdda3f5c..a40b6fcd1 100644
--- a/cli/tools/repl/editor.rs
+++ b/cli/tools/repl/editor.rs
@@ -2,8 +2,10 @@
use crate::colors;
use deno_ast::swc::parser::error::SyntaxError;
+use deno_ast::swc::parser::token::BinOpToken;
use deno_ast::swc::parser::token::Token;
use deno_ast::swc::parser::token::Word;
+use deno_ast::view::AssignOp;
use deno_core::anyhow::Context as _;
use deno_core::error::AnyError;
use deno_core::parking_lot::Mutex;
@@ -235,6 +237,12 @@ impl Validator for EditorHelper {
for item in deno_ast::lex(ctx.input(), deno_ast::MediaType::TypeScript) {
if let deno_ast::TokenOrComment::Token(token) = item.inner {
match token {
+ Token::BinOp(BinOpToken::Div)
+ | Token::AssignOp(AssignOp::DivAssign) => {
+ // it's too complicated to write code to detect regular expression literals
+ // which are no longer tokenized, so if a `/` or `/=` happens, then we bail
+ return Ok(ValidationResult::Valid(None));
+ }
Token::BackQuote => in_template = !in_template,
Token::LParen
| Token::LBracket
diff --git a/cli/tools/repl/session.rs b/cli/tools/repl/session.rs
index 0c0563ab8..f6bbf9b9c 100644
--- a/cli/tools/repl/session.rs
+++ b/cli/tools/repl/session.rs
@@ -193,12 +193,13 @@ impl ReplSession {
line: &str,
) -> EvaluationOutput {
fn format_diagnostic(diagnostic: &deno_ast::Diagnostic) -> String {
+ let display_position = diagnostic.display_position();
format!(
"{}: {} at {}:{}",
colors::red("parse error"),
diagnostic.message(),
- diagnostic.display_position.line_number,
- diagnostic.display_position.column_number,
+ display_position.line_number,
+ display_position.column_number,
)
}