Skip to content

Commit

Permalink
fix non-identifier getter/setter name (#2041)
Browse files Browse the repository at this point in the history
fixes #2040
  • Loading branch information
alexlamsl committed Jun 3, 2017
1 parent 75e2748 commit 3818a9e
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
25 changes: 14 additions & 11 deletions lib/output.js
Expand Up @@ -1207,9 +1207,8 @@ function OutputStream(options) {
});
else output.print("{}");
});
DEFPRINT(AST_ObjectKeyVal, function(self, output){
var key = self.key;
var quote = self.quote;

function print_property_name(key, quote, output) {
if (output.option("quote_keys")) {
output.print_string(key + "");
} else if ((typeof key == "number"
Expand All @@ -1226,20 +1225,24 @@ function OutputStream(options) {
} else {
output.print_string(key, quote);
}
}

DEFPRINT(AST_ObjectKeyVal, function(self, output){
print_property_name(self.key, self.quote, output);
output.colon();
self.value.print(output);
});
DEFPRINT(AST_ObjectSetter, function(self, output){
output.print("set");
AST_ObjectProperty.DEFMETHOD("_print_getter_setter", function(type, output) {
output.print(type);
output.space();
self.key.print(output);
self.value._do_print(output, true);
print_property_name(this.key.name, this.quote, output);
this.value._do_print(output, true);
});
DEFPRINT(AST_ObjectSetter, function(self, output){
self._print_getter_setter("set", output);
});
DEFPRINT(AST_ObjectGetter, function(self, output){
output.print("get");
output.space();
self.key.print(output);
self.value._do_print(output, true);
self._print_getter_setter("get", output);
});
DEFPRINT(AST_Symbol, function(self, output){
var def = self.definition();
Expand Down
17 changes: 17 additions & 0 deletions test/compress/properties.js
Expand Up @@ -555,3 +555,20 @@ native_prototype: {
"".indexOf.call(e, "bar");
}
}

issue_2040: {
input: {
var a = 1;
var b = {
get "a-b"() {
return a;
},
set "a-b"(c) {
a = c;
}
};
console.log(b["a-b"], b["a-b"] = 2, b["a-b"]);
}
expect_exact: 'var a=1;var b={get"a-b"(){return a},set"a-b"(c){a=c}};console.log(b["a-b"],b["a-b"]=2,b["a-b"]);'
expect_stdout: "1 2 2"
}

0 comments on commit 3818a9e

Please sign in to comment.