blob: 3be9184b216d8f4332ea55f749e400f7700592a3 [file] [log] [blame]
function testShouldNotThrow(str) {
eval("function foo(){ var obj = {"+str+", x : 5 };}");
}
function testShouldThrow(str) {
var didThrow = false;
try {
eval("var obj = {"+str+"};");
} catch(e) {
didThrow = true;
}
if (!didThrow) throw new Error("Should Throw");;
}
testShouldNotThrow("get [x] () { return 1 }");
testShouldNotThrow("get [x] () { return 1 }");
testShouldNotThrow("set [x] (value) { valueSet = value }");
testShouldNotThrow("get[x] () { return 1 }");
testShouldNotThrow("set[x] (value) { valueSet = value }");
testShouldNotThrow("get [x]() { return 1 }");
testShouldNotThrow("set [x](value) { valueSet = value }");
testShouldNotThrow("get[x]() { return 1 }");
testShouldNotThrow("set[x](value) { valueSet = value }");
testShouldNotThrow("get [1] () { return 1 }");
testShouldNotThrow("set [1] (value) { valueSet = value }");
testShouldNotThrow("get[1] () { return 1 }");
testShouldNotThrow("set[1] (value) { valueSet = value }");
testShouldNotThrow("get [1]() { return 1 }");
testShouldNotThrow("set [1](value) { valueSet = value }");
testShouldNotThrow("get[1]() { return 1 }");
testShouldNotThrow("set[1](value) { valueSet = value }");
testShouldNotThrow("get [{ a : 'hi'}] () { return 1 }");
testShouldNotThrow("set [{ b : 'ho'}] (value) { valueSet = value }");
testShouldNotThrow("get[{ a : 'hi'}] () { return 1 }");
testShouldNotThrow("set[{ b : 'hi'}] (value) { valueSet = value }");
testShouldNotThrow("get [{ a : 'hi'}]() { return 1 }");
testShouldNotThrow("set [{ b : 'hi'}](value) { valueSet = value }");
testShouldNotThrow("get[{ a : 'hi'}]() { return 1 }");
testShouldNotThrow("set[{ b : 'hi'}](value) { valueSet = value }");
testShouldNotThrow("get [ { a : 'hi'} ] () { return 1 }");
testShouldNotThrow("set [ { b : 'hi'} ] (value) { valueSet = value }");
testShouldNotThrow("get [{ a : 'hi'} ] () { return 1 }");
testShouldNotThrow("set [{ b : 'hi'} ] (value) { valueSet = value }");
testShouldNotThrow("get [ { a : 'hi'}] () { return 1 }");
testShouldNotThrow("set [ { b : 'hi'}] (value) { valueSet = value }");
testShouldNotThrow("get[ { a : 'hi'}] () { return 1 }");
testShouldNotThrow("set[ { b : 'hi'}] (value) { valueSet = value }");
testShouldNotThrow("get[ { a : 'hi'}]() { return 1 }");
testShouldNotThrow("set[ { b : 'hi'}](value) { valueSet = value }");
testShouldNotThrow("get [{ a : 'hi'} ]() { return 1 }");
testShouldNotThrow("set [{ b : 'hi'} ](value) { valueSet = value }");
testShouldNotThrow("get[{ [\"goats\"] : 'hi'} ]() { return 1 }");
testShouldNotThrow("set[{ [1] : 'hi'}] (value) { valueSet = value }");
testShouldNotThrow("get[{ [\"goats\"] : 'hi'} ]() { return 1 }");
testShouldNotThrow("set[{ get [1]() { return 'hi' } }] (value) { valueSet = value }");
testShouldThrow("get [] () { return 1 }");
testShouldThrow("set [] (value) { valueSet = value }");
testShouldThrow("get [ () { return 1 }");
testShouldThrow("set [ (value) { valueSet = value }");
testShouldThrow("get [ () { return 1 }]");
testShouldThrow("set [ (value) { valueSet = value }]");
testShouldThrow("geting [1] () { return 1 }");
testShouldThrow("seting [2] (value) { valueSet = value }");
testShouldThrow("geting [1] () { return 1 }");
testShouldThrow("seting [2] (value) { valueSet = value }");
testShouldThrow("g [1] () { return 1 }");
testShouldThrow("s [2] (value) { valueSet = value }");
testShouldThrow("get [1] (), a : 5");
testShouldThrow("set [2] (value), a : 5");
testShouldThrow("get [1]{ return 5}, a : 5");
testShouldThrow("set [2]{ return 4; }, a : 5");
// getters and setters work in classes.
testShouldNotThrow("x : class Val { get x() { return 4; } }");
testShouldNotThrow("x : class Val { get [2] () { return 4; } }");
class Val{
get ['hi']() { return 4; }
};