Skip to content

Commit

Permalink
fix corner case with yield (#4867)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexlamsl committed Apr 24, 2021
1 parent c296a63 commit a2b1b96
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 16 deletions.
38 changes: 22 additions & 16 deletions lib/output.js
Expand Up @@ -482,31 +482,37 @@ function OutputStream(options) {
return true;
}

function should_merge_comments(node, parent) {
if (parent instanceof AST_Binary) return parent.left === node;
if (parent.TYPE == "Call") return parent.expression === node;
if (parent instanceof AST_Conditional) return parent.condition === node;
if (parent instanceof AST_Dot) return parent.expression === node;
if (parent instanceof AST_Exit) return true;
if (parent instanceof AST_Sequence) return parent.expressions[0] === node;
if (parent instanceof AST_Sub) return parent.expression === node;
if (parent instanceof AST_UnaryPostfix) return true;
if (parent instanceof AST_Yield) return true;
}

function prepend_comments(node) {
var self = this;
var scan = node instanceof AST_Exit && node.value;
var scan;
if (node instanceof AST_Exit) {
scan = node.value;
} else if (node instanceof AST_Yield) {
scan = node.expression;
}
var comments = dump(node);
if (!comments) comments = [];

if (scan) {
var tw = new TreeWalker(function(node) {
var parent = tw.parent();
if (parent instanceof AST_Exit
|| parent instanceof AST_Binary && parent.left === node
|| parent.TYPE == "Call" && parent.expression === node
|| parent instanceof AST_Conditional && parent.condition === node
|| parent instanceof AST_Dot && parent.expression === node
|| parent instanceof AST_Sequence && parent.expressions[0] === node
|| parent instanceof AST_Sub && parent.expression === node
|| parent instanceof AST_UnaryPostfix) {
var before = dump(node);
if (before) comments = comments.concat(before);
} else {
return true;
}
if (!should_merge_comments(node, tw.parent())) return true;
var before = dump(node);
if (before) comments = comments.concat(before);
});
tw.push(node);
node.value.walk(tw);
scan.walk(tw);
}

if (current_pos == 0) {
Expand Down
21 changes: 21 additions & 0 deletions test/compress/yields.js
Expand Up @@ -150,6 +150,27 @@ for_await_of: {
node_version: ">=10"
}

comment_newline: {
beautify = {
comments: "all",
}
input: {
console.log(function*() {
yield (
/* */
"PASS"
);
}().next().value);
}
expect_exact: [
"console.log(function*(){",
"/* */",
'yield"PASS"}().next().value);',
]
expect_stdout: "PASS"
node_version: ">=4"
}

collapse_vars_1: {
options = {
collapse_vars: true,
Expand Down

0 comments on commit a2b1b96

Please sign in to comment.