michael@0: load(libdir + "asserts.js"); michael@0: michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f(...rest=23) {}"); michael@0: }, SyntaxError); michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f([a]=4) {}"); michael@0: }, SyntaxError); michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f(a=4, [b]) {}"); michael@0: }, SyntaxError); michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f(a=yield 24) {}"); michael@0: }, SyntaxError); michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f(a={a : 19 + (yield 24).prop}) {}"); michael@0: }, SyntaxError); michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f(a=1,a=1) {}"); michael@0: }, SyntaxError); michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f(a,a=1) {}"); michael@0: }, SyntaxError); michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f(a=1,a) {}"); michael@0: }, SyntaxError); michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f(a,a,b=1) {}"); michael@0: }, SyntaxError); michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f(a,b=1,a=1) {}"); michael@0: }, SyntaxError); michael@0: assertThrowsInstanceOf(function () { michael@0: eval("function f(a=1,b=1,a=1) {}"); michael@0: }, SyntaxError); michael@0: function silly_but_okay(a=(function () { yield 97; })) {}