fix compressing benchmark.js (it tried to evaluate a statement)
the following code in benchmark.js triggered the issue:
support.decompilation = Function(
'return (' + (function(x) { return { 'x': '' + (1 + x) + '', 'y': 0 }; }) + ')'
)()(0).x === '1';
technically that could be resolved into a constant expression, but seems
it's being used here for browser bugs detection :-\
This commit is contained in:
@@ -534,7 +534,14 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
});
|
||||
def(AST_Statement, function(){
|
||||
throw new Error("Cannot evaluate a statement");
|
||||
throw new Error(string_template("Cannot evaluate a statement [{file}:{line},{col}]", this.start));
|
||||
});
|
||||
def(AST_Function, function(){
|
||||
// XXX: AST_Function inherits from AST_Scope, which itself
|
||||
// inherits from AST_Statement; however, an AST_Function
|
||||
// isn't really a statement. This could byte in other
|
||||
// places too. :-( Wish JS had multiple inheritance.
|
||||
return [ this ];
|
||||
});
|
||||
function ev(node) {
|
||||
return node._eval();
|
||||
|
||||
Reference in New Issue
Block a user