fixed a bug where multiple trailing comments prevented returnification

This commit is contained in:
satyr
2010-10-23 02:30:38 +09:00
parent 32e63cd130
commit a8da321883
2 changed files with 7 additions and 8 deletions

View File

@@ -197,11 +197,11 @@
};
Expressions.prototype.makeReturn = function() {
var end, idx;
end = this.expressions[idx = this.expressions.length - 1];
if (end instanceof Comment) {
end = this.expressions[idx -= 1];
idx = this.expressions.length;
while ((end = this.expressions[--idx]) instanceof Comment) {
}
if (end && !(end instanceof Return)) {
if (end) {
this.expressions[idx] = end.makeReturn();
}
return this;

View File

@@ -195,10 +195,9 @@ exports.Expressions = class Expressions extends Base
# An Expressions node does not return its entire body, rather it
# ensures that the final expression is returned.
makeReturn: ->
end = @expressions[idx = @expressions.length - 1]
end = @expressions[idx -= 1] if end instanceof Comment
if end and end not instanceof Return
@expressions[idx] = end.makeReturn()
idx = @expressions.length
while (end = @expressions[--idx]) instanceof Comment then
@expressions[idx] = end.makeReturn() if end
this
# An **Expressions** is the only node that can serve as the root.