Skip to content

Commit

Permalink
feat(cli/repl): enable await and let re-declarations (denoland#7784)
Browse files Browse the repository at this point in the history
This enables `replMode` during evaluations which allows for top level
await and let re-declarations.
  • Loading branch information
caspervonb authored and JavascriptMick committed Oct 5, 2020
1 parent 93c310b commit 2132b3d
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 6 deletions.
8 changes: 2 additions & 6 deletions cli/repl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,7 @@ pub async fn run(
Some(json!({
"expression": format!("'use strict'; void 0;\n{}", &wrapped_line),
"contextId": context_id,
// TODO(caspervonb) set repl mode to true to enable const redeclarations and top
// level await
"replMode": false,
"replMode": true,
})),
)
.await?;
Expand All @@ -145,9 +143,7 @@ pub async fn run(
Some(json!({
"expression": format!("'use strict'; void 0;\n{}", &line),
"contextId": context_id,
// TODO(caspervonb) set repl mode to true to enable const redeclarations and top
// level await
"replMode": false,
"replMode": true,
})),
)
.await?
Expand Down
39 changes: 39 additions & 0 deletions cli/tests/integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1166,6 +1166,45 @@ fn repl_test_block_expression() {
assert!(err.is_empty());
}

#[test]
fn repl_test_await_resolve() {
let (out, err) = util::run_and_collect_output(
true,
"repl",
Some(vec!["await Promise.resolve('done')"]),
Some(vec![("NO_COLOR".to_owned(), "1".to_owned())]),
false,
);
assert!(out.ends_with("\"done\"\n"));
assert!(err.is_empty());
}

#[test]
fn repl_test_await_timeout() {
let (out, err) = util::run_and_collect_output(
true,
"repl",
Some(vec!["await new Promise((r) => setTimeout(r, 0, 'done'))"]),
Some(vec![("NO_COLOR".to_owned(), "1".to_owned())]),
false,
);
assert!(out.ends_with("\"done\"\n"));
assert!(err.is_empty());
}

#[test]
fn repl_test_let_redeclaration() {
let (out, err) = util::run_and_collect_output(
true,
"repl",
Some(vec!["let foo = 0;", "foo", "let foo = 1;", "foo"]),
Some(vec![("NO_COLOR".to_owned(), "1".to_owned())]),
false,
);
assert!(out.ends_with("undefined\n0\nundefined\n1\n"));
assert!(err.is_empty());
}

#[test]
fn repl_cwd() {
let (_out, err) = util::run_and_collect_output(
Expand Down

0 comments on commit 2132b3d

Please sign in to comment.