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)]