make comments output more robust (#2633)

- improve handling of comments right after `return`
- retain comments after `OutputStream`
- preserve trailing comments
- fix handling of new line before comments
- handle comments around parentheses

fixes #88
fixes #112
fixes #218
fixes #372
fixes #2629
This commit is contained in:
Alex Lam S.L
2017-12-22 04:59:54 +08:00
committed by GitHub
parent 4113609dd4
commit edb4e3bd52
7 changed files with 401 additions and 90 deletions

View File

@@ -317,11 +317,7 @@ function tokenizer($TEXT, filename, html5_comments, shebang) {
}
if (!is_comment) {
ret.comments_before = S.comments_before;
S.comments_before = [];
// make note of any newlines in the comments that came before
for (var i = 0, len = ret.comments_before.length; i < len; i++) {
ret.nlb = ret.nlb || ret.comments_before[i].nlb;
}
ret.comments_after = S.comments_before = [];
}
S.newline_before = false;
return new AST_Token(ret);
@@ -1280,9 +1276,16 @@ function parse($TEXT, options) {
case "(":
next();
var ex = expression(true);
[].push.apply(start.comments_before, ex.start.comments_before);
ex.start.comments_before = start.comments_before;
start.comments_after = ex.start.comments_after;
ex.start = start;
ex.end = S.token;
expect(")");
var end = prev();
end.comments_before = ex.end.comments_before;
[].push.apply(ex.end.comments_after, end.comments_after);
end.comments_after = ex.end.comments_after;
ex.end = end;
return subscripts(ex, allow_calls);
case "[":
return subscripts(array_(), allow_calls);