diff --git a/doc/api/repl.md b/doc/api/repl.md index a134c493a54812..deb1e7ef417708 100644 --- a/doc/api/repl.md +++ b/doc/api/repl.md @@ -258,8 +258,7 @@ undefined ``` One known limitation of using the `await` keyword in the REPL is that -it will invalidate the lexical scoping of the `const` and `let` -keywords. +it will invalidate the lexical scoping of the `const` keywords. For example: @@ -268,10 +267,11 @@ For example: undefined > m 123 -> const m = await Promise.resolve(234) -undefined -> m +> m = await Promise.resolve(234) 234 +// redeclaring the constant does error +> const m = await Promise.resolve(345) +Uncaught SyntaxError: Identifier 'm' has already been declared ``` [`--no-experimental-repl-await`][] shall disable top-level await in REPL. diff --git a/test/parallel/test-repl-top-level-await.js b/test/parallel/test-repl-top-level-await.js index c8bc26fad62e5c..656ea1c4d69a2a 100644 --- a/test/parallel/test-repl-top-level-await.js +++ b/test/parallel/test-repl-top-level-await.js @@ -173,6 +173,12 @@ async function ordinaryTests() { '3', 'undefined', ]], + // Testing documented behavior of `const`s (see: https://github.com/nodejs/node/issues/45918) + ['const k = await Promise.resolve(123)'], + ['k', '123'], + ['k = await Promise.resolve(234)', '234'], + ['k', '234'], + ['const k = await Promise.resolve(345)', "Uncaught SyntaxError: Identifier 'k' has already been declared"], // Regression test for https://github.com/nodejs/node/issues/43777. ['await Promise.resolve(123), Promise.resolve(456)', 'Promise {', { line: 0 }], ['await Promise.resolve(123), await Promise.resolve(456)', '456'],