From 2f02b9a19d05ba047050365744af5014466fd631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 2 Nov 2021 16:41:03 -0400 Subject: [PATCH] fix: ensure comment stack is correctly handled --- .../babel-parser/src/parser/expression.js | 6 +- .../template/trailing-comments/input.js | 1 + .../template/trailing-comments/output.json | 62 +++++++++++++++++++ 3 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/es2015/template/trailing-comments/input.js create mode 100644 packages/babel-parser/test/fixtures/es2015/template/trailing-comments/output.json diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 78a519fcf103..075df742d132 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1876,13 +1876,13 @@ export default class ExpressionParser extends LValParser { }; elem.tail = isTail; this.next(); - const result = this.finishNodeAt( + this.finishNode(elem, "TemplateElement"); + this.resetEndLocation( elem, - "TemplateElement", elemEnd, createPositionFromPosition(this.state.lastTokEndLoc, endOffset), ); - return result; + return elem; } // https://tc39.es/ecma262/#prod-TemplateLiteral diff --git a/packages/babel-parser/test/fixtures/es2015/template/trailing-comments/input.js b/packages/babel-parser/test/fixtures/es2015/template/trailing-comments/input.js new file mode 100644 index 000000000000..43423443008c --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/template/trailing-comments/input.js @@ -0,0 +1 @@ +`${a}` // comment diff --git a/packages/babel-parser/test/fixtures/es2015/template/trailing-comments/output.json b/packages/babel-parser/test/fixtures/es2015/template/trailing-comments/output.json new file mode 100644 index 000000000000..e459344f740e --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/template/trailing-comments/output.json @@ -0,0 +1,62 @@ +{ + "type": "File", + "start":0,"end":17,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":17}}, + "program": { + "type": "Program", + "start":0,"end":17,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":17}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "expression": { + "type": "TemplateLiteral", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "expressions": [ + { + "type": "Identifier", + "start":3,"end":4,"loc":{"start":{"line":1,"column":3},"end":{"line":1,"column":4},"identifierName":"a"}, + "name": "a" + } + ], + "quasis": [ + { + "type": "TemplateElement", + "start":1,"end":1,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}}, + "value": { + "raw": "", + "cooked": "" + }, + "tail": false + }, + { + "type": "TemplateElement", + "start":5,"end":5,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":5}}, + "value": { + "raw": "", + "cooked": "" + }, + "tail": true + } + ] + }, + "trailingComments": [ + { + "type": "CommentLine", + "value": " comment", + "start":7,"end":17,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":17}} + } + ] + } + ], + "directives": [] + }, + "comments": [ + { + "type": "CommentLine", + "value": " comment", + "start":7,"end":17,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":17}} + } + ] +} \ No newline at end of file