Prevent endless recursion when evaluating self-referencing consts

Fix #1041
This commit is contained in:
Richard van Velzen
2016-04-12 20:30:44 +02:00
parent 187a0caf9d
commit 4b4528ee05
2 changed files with 49 additions and 2 deletions

View File

@@ -1030,8 +1030,16 @@ merge(Compressor.prototype, {
: ev(this.alternative, compressor);
});
def(AST_SymbolRef, function(compressor){
var d = this.definition();
if (d && d.constant && d.init) return ev(d.init, compressor);
if (this._evaluating) throw def;
this._evaluating = true;
try {
var d = this.definition();
if (d && d.constant && d.init) {
return ev(d.init, compressor);
}
} finally {
this._evaluating = false;
}
throw def;
});
def(AST_Dot, function(compressor){