Invalid flags in a RegExp literal should be an early SyntaxError
[WebKit-https.git] / JSTests / stress / arguments-define-property.js
1 function assert(a) {
2     if (!a)
3         throw Error("Bad assertion!");
4 }
5
6 function testProperties(o, initProperty, testProperty, shouldThrow) {
7     Object.defineProperty(arguments, 0, initProperty);
8
9     if (shouldThrow) {
10         try {
11             Object.defineProperty(arguments, 0, testProperty);
12             assert(false);
13         } catch(e) {
14             assert(e instanceof TypeError);
15         }
16     } else {
17         assert(Object.defineProperty(arguments, 0, testProperty));
18     }
19 }
20
21 testProperties("foo", {configurable: false}, {writable: true}, false);
22 testProperties("foo", {configurable: false}, {configurable: true}, true);
23 testProperties("foo", {configurable: false, enumareble: true}, {enumerable: false}, true);
24 testProperties("foo", {configurable: false, writable: false}, {writable: false}, false);
25 testProperties("foo", {configurable: false, writable: false}, {writable: true}, true);
26 testProperties("foo", {configurable: false, writable: false, value: 50}, {value: 30}, true);
27 testProperties("foo", {configurable: false, writable: false, value: 30}, {value: 30}, false);
28 testProperties("foo", {configurable: false, get: () => {return 0}}, {get: () => {return 10}}, true);
29 let getterFoo = () => {return 0};
30 testProperties("foo", {configurable: false, get: getterFoo}, {get: getterFoo}, false);
31 testProperties("foo", {configurable: false, set: (x) => {return 0}}, {get: (x) => {return 10}}, true);
32 let setterFoo = (x) => {return 0};
33 testProperties("foo", {configurable: false, set: setterFoo}, {set: setterFoo}, false);
34