From 715e9e9137dd5898c90e90c558e590aad9473c99 Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky I Date: Thu, 11 Nov 2021 12:10:13 -0800 Subject: [PATCH] fix(babel-parser): Move storage of expressionValue in DirectiveLiteral to main parser so it is accessible to others. Closes #13953. Reviewed by @tolmasky. --- packages/babel-parser/src/parser/statement.js | 4 ++++ packages/babel-parser/src/plugins/estree.js | 12 ------------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 1170a7a9cc77..6dc3bd050f63 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -157,13 +157,17 @@ export default class StatementParser extends ExpressionParser { directive.value = directive.expression; delete directive.expression; + const expressionValue = directiveLiteral.value; const directiveLiteral = directive.value; const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end); const val = (directiveLiteral.value = raw.slice(1, -1)); // remove quotes this.addExtra(directiveLiteral, "raw", raw); this.addExtra(directiveLiteral, "rawValue", val); + this.addExtra(directiveLiteral, "expressionValue", expressionValue); + directiveLiteral.type = "DirectiveLiteral"; + return directive; } diff --git a/packages/babel-parser/src/plugins/estree.js b/packages/babel-parser/src/plugins/estree.js index 9fd2ff3ede1d..38b97f76672d 100644 --- a/packages/babel-parser/src/plugins/estree.js +++ b/packages/babel-parser/src/plugins/estree.js @@ -130,18 +130,6 @@ export default (superClass: Class): Class => ); } - stmtToDirective(stmt: N.Statement): N.Directive { - const value = stmt.expression.value; - const directive = super.stmtToDirective(stmt); - - // Record the expression value as in estree mode we want - // the stmt to have the real value e.g. ("use strict") and - // not the raw value e.g. ("use\\x20strict") - this.addExtra(directive.value, "expressionValue", value); - - return directive; - } - parseBlockBody( node: N.BlockStatementLike, ...args: [?boolean, boolean, TokenType, void | (boolean => void)]