aboutsummaryrefslogtreecommitdiff
path: root/lib/compress.js
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-03-01 02:03:47 +0800
committerGitHub <noreply@github.com>2017-03-01 02:03:47 +0800
commitb34fa11a13221b7ad26ea48f18fcf2f5903c94c1 (patch)
tree3e17aeb5807984d63c9e903814072fcb9cdc722f /lib/compress.js
parent320984c5f59128e2973243b1ac80ae57179fd84d (diff)
downloadtracifyjs-b34fa11a13221b7ad26ea48f18fcf2f5903c94c1.tar.gz
tracifyjs-b34fa11a13221b7ad26ea48f18fcf2f5903c94c1.zip
fix `evaluate` on object getter & setter (#1515)
Diffstat (limited to 'lib/compress.js')
-rw-r--r--lib/compress.js15
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') {