From 01d632d7e8cf06e90420e10a30b4abdd3e6b4ed3 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Wed, 24 Apr 2019 23:55:43 +0200 Subject: [PATCH] repl: add new language features to top level await statements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds stage-3 language features to acorn so that it's possible to parse these features when using top level await in the REPL. PR-URL: https://github.com/nodejs/node/pull/27400 Refs: https://github.com/nodejs/node/issues/27391 Refs: https://github.com/nodejs/node/issues/25835 Reviewed-By: Anna Henningsen Reviewed-By: Michaƫl Zasso --- lib/internal/repl/await.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/internal/repl/await.js b/lib/internal/repl/await.js index ac0445311b7ba9..6fb10bbba0d2b8 100644 --- a/lib/internal/repl/await.js +++ b/lib/internal/repl/await.js @@ -4,6 +4,23 @@ const { Object } = primordials; const acorn = require('internal/deps/acorn/acorn/dist/acorn'); const walk = require('internal/deps/acorn/acorn-walk/dist/walk'); +const privateMethods = + require('internal/deps/acorn-plugins/acorn-private-methods/index'); +const bigInt = require('internal/deps/acorn-plugins/acorn-bigint/index'); +const classFields = + require('internal/deps/acorn-plugins/acorn-class-fields/index'); +const numericSeparator = + require('internal/deps/acorn-plugins/acorn-numeric-separator/index'); +const staticClassFeatures = + require('internal/deps/acorn-plugins/acorn-static-class-features/index'); + +const parser = acorn.Parser.extend( + privateMethods, + bigInt, + classFields, + numericSeparator, + staticClassFeatures +); const noop = () => {}; const visitorsWithoutAncestors = { @@ -76,7 +93,7 @@ function processTopLevelAwait(src) { const wrappedArray = wrapped.split(''); let root; try { - root = acorn.parse(wrapped, { ecmaVersion: 10 }); + root = parser.parse(wrapped, { ecmaVersion: 10 }); } catch { return null; }