diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2017-03-01 02:03:47 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-01 02:03:47 +0800 |
commit | b34fa11a13221b7ad26ea48f18fcf2f5903c94c1 (patch) | |
tree | 3e17aeb5807984d63c9e903814072fcb9cdc722f /lib/compress.js | |
parent | 320984c5f59128e2973243b1ac80ae57179fd84d (diff) | |
download | tracifyjs-b34fa11a13221b7ad26ea48f18fcf2f5903c94c1.tar.gz tracifyjs-b34fa11a13221b7ad26ea48f18fcf2f5903c94c1.zip |
fix `evaluate` on object getter & setter (#1515)
Diffstat (limited to 'lib/compress.js')
-rw-r--r-- | lib/compress.js | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/compress.js b/lib/compress.js index 294cb616..0349e45f 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1148,11 +1148,14 @@ merge(Compressor.prototype, { def(AST_Statement, function(){ throw new Error(string_template("Cannot evaluate a statement [{file}:{line},{col}]", this.start)); }); + // XXX: AST_Accessor and AST_Function both inherit from AST_Scope, + // which itself inherits from AST_Statement; however, they aren't + // really statements. This could bite in other places too. :-( + // Wish JS had multiple inheritance. + def(AST_Accessor, function(){ + throw def; + }); 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. throw def; }); function ev(node, compressor) { @@ -1180,7 +1183,9 @@ merge(Compressor.prototype, { for (var i = 0, len = this.properties.length; i < len; i++) { var prop = this.properties[i]; var key = prop.key; - if (key instanceof AST_Node) { + if (key instanceof AST_Symbol) { + key = key.name; + } else if (key instanceof AST_Node) { key = ev(key, compressor); } if (typeof Object.prototype[key] === 'function') { |