Allow get and set in shorthand properties in object literals
Fixed by @kzc Fixes #1146
This commit is contained in:
parent
842ac27efb
commit
d65276e110
14
lib/parse.js
14
lib/parse.js
|
|
@ -1622,6 +1622,8 @@ function parse($TEXT, options) {
|
||||||
}
|
}
|
||||||
ret = _make_symbol(AST_SymbolRef);
|
ret = _make_symbol(AST_SymbolRef);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
return undefined;
|
||||||
}
|
}
|
||||||
next();
|
next();
|
||||||
return ret;
|
return ret;
|
||||||
|
|
@ -1865,19 +1867,21 @@ function parse($TEXT, options) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (name == "get") {
|
if (name == "get") {
|
||||||
return new AST_ObjectGetter({
|
var atom = as_atom_node();
|
||||||
|
if (atom) return new AST_ObjectGetter({
|
||||||
start : start,
|
start : start,
|
||||||
static: is_static,
|
static: is_static,
|
||||||
key : as_atom_node(),
|
key : atom,
|
||||||
value : function_(AST_Accessor),
|
value : function_(AST_Accessor),
|
||||||
end : prev()
|
end : prev()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (name == "set") {
|
else if (name == "set") {
|
||||||
return new AST_ObjectSetter({
|
var atom = as_atom_node();
|
||||||
|
if (atom) return new AST_ObjectSetter({
|
||||||
start : start,
|
start : start,
|
||||||
static: is_static,
|
static: is_static,
|
||||||
key : as_atom_node(),
|
key : atom,
|
||||||
value : function_(AST_Accessor),
|
value : function_(AST_Accessor),
|
||||||
end : prev()
|
end : prev()
|
||||||
});
|
});
|
||||||
|
|
|
||||||
106
test/compress/object.js
Normal file
106
test/compress/object.js
Normal file
|
|
@ -0,0 +1,106 @@
|
||||||
|
getter_setter: {
|
||||||
|
input: {
|
||||||
|
var get = "bar";
|
||||||
|
var a = {
|
||||||
|
get,
|
||||||
|
set: "foo",
|
||||||
|
get bar() {
|
||||||
|
return this.get;
|
||||||
|
},
|
||||||
|
get 5() {
|
||||||
|
return "five";
|
||||||
|
},
|
||||||
|
get 0xf55() {
|
||||||
|
return "f five five";
|
||||||
|
},
|
||||||
|
get "five"() {
|
||||||
|
return 5;
|
||||||
|
},
|
||||||
|
set one(value) {
|
||||||
|
this._one = value;
|
||||||
|
},
|
||||||
|
set 9(value) {
|
||||||
|
this._nine = value;
|
||||||
|
},
|
||||||
|
set 0b1010(value) {
|
||||||
|
this._ten = value;
|
||||||
|
},
|
||||||
|
set "eleven"(value) {
|
||||||
|
this._eleven = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var b = {
|
||||||
|
get() { return "gift"; },
|
||||||
|
set: function(code) { return "Storing code " + code; }
|
||||||
|
};
|
||||||
|
var c = {
|
||||||
|
["get"]: "foo",
|
||||||
|
["set"]: "bar"
|
||||||
|
};
|
||||||
|
var d = {
|
||||||
|
get: "foo",
|
||||||
|
set: "bar"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var get = "bar";
|
||||||
|
var a = {
|
||||||
|
get,
|
||||||
|
set: "foo",
|
||||||
|
get bar() {
|
||||||
|
return this.get;
|
||||||
|
},
|
||||||
|
get 5() {
|
||||||
|
return "five";
|
||||||
|
},
|
||||||
|
get 0xf55() {
|
||||||
|
return "f five five";
|
||||||
|
},
|
||||||
|
get "five"() {
|
||||||
|
return 5;
|
||||||
|
},
|
||||||
|
set one(value) {
|
||||||
|
this._one = value;
|
||||||
|
},
|
||||||
|
set 9(value) {
|
||||||
|
this._nine = value;
|
||||||
|
},
|
||||||
|
set 0b1010(value) {
|
||||||
|
this._ten = value;
|
||||||
|
},
|
||||||
|
set "eleven"(value) {
|
||||||
|
this._eleven = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var b = {
|
||||||
|
get() { return "gift"; },
|
||||||
|
set: function(code) { return "Storing code " + code; }
|
||||||
|
};
|
||||||
|
var c = {
|
||||||
|
["get"]: "foo",
|
||||||
|
["set"]: "bar"
|
||||||
|
};
|
||||||
|
var d = {
|
||||||
|
get: "foo",
|
||||||
|
set: "bar"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getter_setter_mangler: {
|
||||||
|
mangle = {}
|
||||||
|
input: {
|
||||||
|
function f(get,set) {
|
||||||
|
return {
|
||||||
|
get,
|
||||||
|
set,
|
||||||
|
get g(){},
|
||||||
|
set s(n){},
|
||||||
|
c,
|
||||||
|
a:1,
|
||||||
|
m(){}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect_exact: "function f(t,e){return{get:t,set:e,get g(){},set s(t){},c,a:1,m(){}}}"
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user