blob: d96e73152b5bac554a7a8a7106369f2ac423544f [file] [log] [blame]
// |reftest| skip-if(!xulRuntime.shell)
function test() {
// Bug 924688: computed property names
assertExpr('a= {[field1]: "a", [field2=1]: "b"}',
aExpr("=", ident("a"),
objExpr([{ key: computedName(ident("field1")), value: lit("a")},
{ key: computedName(aExpr("=", ident("field2"), lit(1))),
value: lit("b")}])));
assertExpr('a= {["field1"]: "a", field2 : "b"}',
aExpr("=", ident("a"),
objExpr([{ key: computedName(lit("field1")), value: lit("a") },
{ key: ident("field2"), value: lit("b") }])));
assertExpr('a= {[1]: 1, 2 : 2}',
aExpr("=", ident("a"),
objExpr([{ key: computedName(lit(1)), value: lit(1) },
{ key: lit(2), value: lit(2) }])));
// Bug 924688: computed property names - location information
var node = Reflect.parse("a = {[field1]: 5}");
Pattern({ body: [ { expression: { right: { properties: [ {key: { loc:
{ start: { line: 1, column: 5 }, end: { line: 1, column: 13 }}}}]}}}]}).match(node);
// Bug 1048384 - Getter/setter syntax with computed names
assertExpr("b = { get [meth]() { } }", aExpr("=", ident("b"),
objExpr([{ key: computedName(ident("meth")), value: funExpr(null, [], blockStmt([])),
method: false, kind: "get"}])));
assertExpr("b = { set [meth](a) { } }", aExpr("=", ident("b"),
objExpr([{ key: computedName(ident("meth")), value: funExpr(null, [ident("a")],
blockStmt([])), method: false, kind: "set"}])));
// Bug 1220702 - If it's not written as a method, `.method` should be false.
assertExpr("({[x]: function () {}})",
objExpr([{
key: computedName(ident("x")),
value: funExpr(null, [], blockStmt([])),
method: false,
kind: "init"
}]));
}
runtest(test);