diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /js/src/tests/test262/language/expressions/compound-assignment | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/test262/language/expressions/compound-assignment')
408 files changed, 15076 insertions, 0 deletions
diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-1-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-1-s.js new file mode 100644 index 0000000000..860b8ea7f8 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-1-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-1-s +description: > + ReferenceError is thrown if the LeftHandSideExpression of a Compound + Assignment operator(*=) evaluates to an unresolvable reference +---*/ + + +assert.throws(ReferenceError, function() { + eval("_11_13_2_1 *= 1;"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-10-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-10-s.js new file mode 100644 index 0000000000..2faafbc2c3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-10-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-10-s +description: > + ReferenceError is thrown if the LeftHandSideExpression of a Compound + Assignment operator(^=) evaluates to an unresolvable reference +---*/ + + +assert.throws(ReferenceError, function() { + eval("_11_13_2_10 ^= 1;"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-11-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-11-s.js new file mode 100644 index 0000000000..eacdde129d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-11-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-11-s +description: > + ReferenceError is thrown if the LeftHandSideExpression of a Compound + Assignment operator(|=) evaluates to an unresolvable reference +---*/ + + +assert.throws(ReferenceError, function() { + eval("_11_13_2_11 |= 1;"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-12-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-12-s.js new file mode 100644 index 0000000000..64140e987a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-12-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-12-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(*=) evaluates to a resolvable reference +---*/ + + var _11_13_2_12 = 5 + _11_13_2_12 *= 2; + +assert.sameValue(_11_13_2_12, 10, '_11_13_2_12'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-13-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-13-s.js new file mode 100644 index 0000000000..fb49371147 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-13-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-13-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(/=) evaluates to a resolvable reference +---*/ + + var _11_13_2_13 = 6 + _11_13_2_13 /= 2; + +assert.sameValue(_11_13_2_13, 3, '_11_13_2_13'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-14-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-14-s.js new file mode 100644 index 0000000000..e765268f7d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-14-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-14-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(%=) evaluates to a resolvable reference +---*/ + + var _11_13_2_14 = 5 + _11_13_2_14 %= 2; + +assert.sameValue(_11_13_2_14, 1, '_11_13_2_14'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-15-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-15-s.js new file mode 100644 index 0000000000..7ddb8bc132 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-15-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-15-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(>>>=) evaluates to a resolvable reference +---*/ + + var _11_13_2_15 = 8 + _11_13_2_15 >>>= 2; + +assert.sameValue(_11_13_2_15, 2, '_11_13_2_15'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-16-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-16-s.js new file mode 100644 index 0000000000..33163dc7a9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-16-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-16-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(-=) evaluates to a resolvable reference +---*/ + + var _11_13_2_16 = 5 + _11_13_2_16 -= 2; + +assert.sameValue(_11_13_2_16, 3, '_11_13_2_16'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-17-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-17-s.js new file mode 100644 index 0000000000..6ad052276d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-17-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-17-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(<<=) evaluates to a resolvable reference +---*/ + + var _11_13_2_17 = 1; + _11_13_2_17 <<= 2; + +assert.sameValue(_11_13_2_17, 4, '_11_13_2_17'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-18-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-18-s.js new file mode 100644 index 0000000000..75bd0d8e4f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-18-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-18-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(>>=) evaluates to a resolvable reference +---*/ + + var _11_13_2_18 = 4 + _11_13_2_18 >>= 2; + +assert.sameValue(_11_13_2_18, 1, '_11_13_2_18'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-19-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-19-s.js new file mode 100644 index 0000000000..dfe7f7f8e5 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-19-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-19-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(+=) evaluates to a resolvable reference +---*/ + + var _11_13_2_19 = -1 + _11_13_2_19 += 10; + +assert.sameValue(_11_13_2_19, 9, '_11_13_2_19'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-2-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-2-s.js new file mode 100644 index 0000000000..a5010a29ec --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-2-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-2-s +description: > + Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a + Compound Assignment operator(/=) evaluates to an unresolvable reference +---*/ + + +assert.throws(ReferenceError, function() { + eval("_11_13_2_2 /= 1;"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-20-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-20-s.js new file mode 100644 index 0000000000..dbecd1e14d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-20-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-20-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(&=) evaluates to a resolvable reference +---*/ + + var _11_13_2_20 = 5 + _11_13_2_20 &= 3; + +assert.sameValue(_11_13_2_20, 1, '_11_13_2_20'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-21-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-21-s.js new file mode 100644 index 0000000000..525d3374a4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-21-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-21-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(^=) evaluates to a resolvable reference +---*/ + + var _11_13_2_21 = 5 + _11_13_2_21 ^= 3; + +assert.sameValue(_11_13_2_21, 6, '_11_13_2_21'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-22-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-22-s.js new file mode 100644 index 0000000000..e8fd2bac20 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-22-s.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-22-s +description: > + ReferenceError isn't thrown if the LeftHandSideExpression of a Compound + Assignment operator(|=) evaluates to a resolvable reference +---*/ + + var _11_13_2_22 = 5 + _11_13_2_22 |= 2; + +assert.sameValue(_11_13_2_22, 7, '_11_13_2_22'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-23-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-23-s-strict.js new file mode 100644 index 0000000000..dbfb3f9fdb --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-23-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-23-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(*=) is a reference to a data property + with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop *= 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-24-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-24-s-strict.js new file mode 100644 index 0000000000..4f827d66c4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-24-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-24-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(/=) is a reference to a data property + with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop /= 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-25-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-25-s-strict.js new file mode 100644 index 0000000000..761ab24cc4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-25-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-25-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(%=) is a reference to a data property + with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop %= 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-26-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-26-s-strict.js new file mode 100644 index 0000000000..63d5b60be3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-26-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-26-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(+=) is a reference to a data property + with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop += 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-27-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-27-s-strict.js new file mode 100644 index 0000000000..ac762ff2f3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-27-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-27-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(-=) is a reference to a data property + with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop -= 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-28-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-28-s-strict.js new file mode 100644 index 0000000000..ab81ebf7e5 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-28-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-28-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(<<=) is a reference to a data + property with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop <<= 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-29-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-29-s-strict.js new file mode 100644 index 0000000000..2f532dcc83 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-29-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-29-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(>>=) is a reference to a data + property with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop >>= 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-30-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-30-s-strict.js new file mode 100644 index 0000000000..e4be71b5bf --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-30-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-30-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(>>>=) is a reference to a data + property with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop >>>= 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-31-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-31-s-strict.js new file mode 100644 index 0000000000..151abacdd2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-31-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-31-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(&=) is a reference to a data property + with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop &= 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-32-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-32-s-strict.js new file mode 100644 index 0000000000..8c3f5cc145 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-32-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-32-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(^=) is a reference to a data property + with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop ^= 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-33-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-33-s-strict.js new file mode 100644 index 0000000000..a8bf7c873a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-33-s-strict.js @@ -0,0 +1,26 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-33-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(|=) is a reference to a data property + with the attribute value {[[Writable]]:false} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + value: 10, + writable: false, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop |= 20; +}); +assert.sameValue(obj.prop, 10, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-34-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-34-s-strict.js new file mode 100644 index 0000000000..d000837723 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-34-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-34-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(*=) is a reference to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop *= 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-35-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-35-s-strict.js new file mode 100644 index 0000000000..4b30aabdf9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-35-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-35-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(/=) is a reference to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop /= 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-36-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-36-s-strict.js new file mode 100644 index 0000000000..0a475a6aad --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-36-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-36-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(%=) is a reference to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop %= 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-37-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-37-s-strict.js new file mode 100644 index 0000000000..46ca3ff608 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-37-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-37-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(+=) is a reference to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop += 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-38-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-38-s-strict.js new file mode 100644 index 0000000000..392974d4c7 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-38-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-38-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(-=) is a reference to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop -= 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-39-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-39-s-strict.js new file mode 100644 index 0000000000..c23720a86b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-39-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-39-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(<<=) is a reference to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop <<= 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-4-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-4-s.js new file mode 100644 index 0000000000..1bb1260b96 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-4-s.js @@ -0,0 +1,17 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-4-s +description: > + Strict Mode - ReferenceError is thrown if the + LeftHandSideExpression of a Compound Assignment operator(+=) + evaluates to an unresolvable reference +---*/ + + +assert.throws(ReferenceError, function() { + eval("_11_13_2_4 += 1;"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-40-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-40-s-strict.js new file mode 100644 index 0000000000..04bc4602d4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-40-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-40-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(>>=) is a reference to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop >>= 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-41-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-41-s-strict.js new file mode 100644 index 0000000000..29d9c2fe21 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-41-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-41-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(>>>=) is a reference to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop >>>= 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-42-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-42-s-strict.js new file mode 100644 index 0000000000..5e5a07de71 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-42-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-42-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(&=) is a reference to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop &= 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-43-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-43-s-strict.js new file mode 100644 index 0000000000..4a0468bd15 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-43-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-43-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(^=) is a reference to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop ^= 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-44-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-44-s-strict.js new file mode 100644 index 0000000000..8264e12584 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-44-s-strict.js @@ -0,0 +1,28 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-44-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(|=) is a reference of to an accessor + property with the attribute value {[[Set]]:undefined} +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.defineProperty(obj, "prop", { + get: function () { + return 11; + }, + set: undefined, + enumerable: true, + configurable: true + }); +assert.throws(TypeError, function() { + obj.prop |= 20; +}); +assert.sameValue(obj.prop, 11, 'obj.prop'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-45-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-45-s-strict.js new file mode 100644 index 0000000000..3e6aca427d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-45-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-45-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(*=) is a reference to a non-existent + property of an object whose [[Extensible]] internal property is + false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len *= 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-46-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-46-s-strict.js new file mode 100644 index 0000000000..fe68ee8985 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-46-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-46-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(/=) is a reference to a non-existent + property of an object whose [[Extensible]] internal property is + false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len /= 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-47-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-47-s-strict.js new file mode 100644 index 0000000000..8b9086b469 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-47-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-47-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(%=) is a reference to a non-existent + property of an object whose [[Extensible]] internal property is + false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len %= 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-48-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-48-s-strict.js new file mode 100644 index 0000000000..89ec389e67 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-48-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-48-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(+=) is a reference to a non-existent + property of an object whose [[Extensible]] internal property is + false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len += 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-49-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-49-s-strict.js new file mode 100644 index 0000000000..5636fadc11 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-49-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-49-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(-=) is a reference to a non-existent + property of an object whose [[Extensible]] internal property is + false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len -= 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-5-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-5-s.js new file mode 100644 index 0000000000..ec5931d0e6 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-5-s.js @@ -0,0 +1,17 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-5-s +description: > + Strict Mode - ReferenceError is thrown if the + LeftHandSideExpression of a Compound Assignment operator(-=) + evaluates to an unresolvable reference +---*/ + + +assert.throws(ReferenceError, function() { + eval("_11_13_2_5 -= 1;"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-50-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-50-s-strict.js new file mode 100644 index 0000000000..a3ddae6c1a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-50-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-50-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(<<=) is a reference to a non-existent + property of an object whose [[Extensible]] internal property is + false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len <<= 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-51-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-51-s-strict.js new file mode 100644 index 0000000000..e257753fff --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-51-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-51-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(>>=) is a reference to a non-existent + property of an object whose [[Extensible]] internal property is + false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len >>= 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-52-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-52-s-strict.js new file mode 100644 index 0000000000..650f489673 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-52-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-52-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(>>>=) is a reference to a + non-existent property of an object whose [[Extensible]] internal + property if false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len >>>= 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-53-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-53-s-strict.js new file mode 100644 index 0000000000..4ba94616ce --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-53-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-53-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(&=) is a reference to a non-existent + property of an object whose [[Extensible]] internal property is + false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len &= 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-54-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-54-s-strict.js new file mode 100644 index 0000000000..3f50e7bd1a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-54-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-54-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(^=) is a reference to a non-existent + property of an object whose [[Extensible]] internal property is + false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len ^= 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-55-s-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-55-s-strict.js new file mode 100644 index 0000000000..f3e49586aa --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-55-s-strict.js @@ -0,0 +1,21 @@ +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-55-s +description: > + Strict Mode - TypeError is thrown if The LeftHandSide of a + Compound Assignment operator(|=) is a reference to a non-existent + property of an object whose [[Extensible]] internal property is + false +flags: [onlyStrict] +---*/ + + var obj = {}; + Object.preventExtensions(obj); +assert.throws(TypeError, function() { + obj.len |= 10; +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-6-1gs-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-6-1gs-strict.js new file mode 100644 index 0000000000..e8aa0127d3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-6-1gs-strict.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-1gs +description: > + Strict Mode - SyntaxError is throw if the identifier eval appears + as the LeftHandSideExpression of a Compound Assignment operator(*=) +negative: + phase: parse + type: SyntaxError +flags: [onlyStrict] +---*/ + +$DONOTEVALUATE(); + +eval *= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-6-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-6-s.js new file mode 100644 index 0000000000..9e3576dfcb --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-6-s.js @@ -0,0 +1,17 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-s +description: > + Strict Mode - ReferenceError is thrown if the + LeftHandSideExpression of a Compound Assignment operator(<<=) + evaluates to an unresolvable reference +---*/ + + +assert.throws(ReferenceError, function() { + eval("_11_13_2_6 <<= 1;"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-8-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-8-s.js new file mode 100644 index 0000000000..820436d1dd --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-8-s.js @@ -0,0 +1,17 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-8-s +description: > + Strict Mode - ReferenceError is thrown if the + LeftHandSideExpression of a Compound Assignment operator(>>>=) + evaluates to an unresolvable reference +---*/ + + +assert.throws(ReferenceError, function() { + eval("_11_13_2_8 >>>= 1;"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-9-s.js b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-9-s.js new file mode 100644 index 0000000000..19586dc2ec --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/11.13.2-9-s.js @@ -0,0 +1,17 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-9-s +description: > + Strict Mode - ReferenceError is thrown if the + LeftHandSideExpression of a Compound Assignment operator(&=) + evaluates to an unresolvable reference +---*/ + + +assert.throws(ReferenceError, function() { + eval("_11_13_2_9 &= 1;"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.1.js new file mode 100644 index 0000000000..c5f7a09d07 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.1.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.1 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x *= y" +---*/ + +//CHECK#1 +var x = 1; +var z = (x *= -1); +if (z !== -1) { + $ERROR('#1: var x = 1; var z = (x *= -1); z === -1. Actual: ' + (z)); +} + +//CHECK#2 +var x = 1; +var y = -1; +var z = (x *= y); +if (z !== -1) { + $ERROR('#2: var x = 1; var y = -1; var z = (x *= y); z === -1. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.10.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.10.js new file mode 100644 index 0000000000..ab74035577 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.10.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.10 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x ^= y" +---*/ + +//CHECK#1 +var x = 1; +var z = (x ^= 1); +if (z !== 0) { + $ERROR('#1: var x = 1; var z = (x ^= 1); z === 0. Actual: ' + (z)); +} + +//CHECK#2 +var x = 1; +var y = 1; +var z = (x ^= y); +if (z !== 0) { + $ERROR('#2: var x = 1; var y = 1; var z = (x ^= y); z === 0. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.11.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.11.js new file mode 100644 index 0000000000..56606d45c8 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.11.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.11 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x |= y" +---*/ + +//CHECK#1 +var x = 0; +var z = (x |= 1); +if (z !== 1) { + $ERROR('#1: var x = 0; var z = (x |= 1); z === 1. Actual: ' + (z)); +} + +//CHECK#2 +var x = 0; +var y = 1; +var z = (x |= y); +if (z !== 1) { + $ERROR('#2: var x = 0; var y = 1; var z = (x |= y); z === 1. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.2.js new file mode 100644 index 0000000000..c89fcd4511 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.2.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.2 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x /= y" +---*/ + +//CHECK#1 +var x = 1; +var z = (x /= -1); +if (z !== -1) { + $ERROR('#1: var x = 1; var z = (x /= -1); z === -1. Actual: ' + (z)); +} + +//CHECK#2 +var x = 1; +var y = -1; +var z = (x /= y); +if (z !== -1) { + $ERROR('#2: var x = 1; var y = -1; var z = (x /= y); z === -1. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.3.js new file mode 100644 index 0000000000..2c37b8c364 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.3.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.3 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x %= y" +---*/ + +//CHECK#1 +var x = -1; +var z = (x %= 2); +if (z !== -1) { + $ERROR('#1: var x = -1; var z = (x %= 2); z === -1. Actual: ' + (z)); +} + +//CHECK#2 +var x = -1; +var y = 2; +var z = (x %= y); +if (z !== -1) { + $ERROR('#2: var x = -1; var y = 2; var z = (x %= y); z === -1. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.4.js new file mode 100644 index 0000000000..e9077f2d29 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.4.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.4 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x += y" +---*/ + +//CHECK#1 +var x = 1; +var z = (x += 1); +if (z !== 2) { + $ERROR('#1: var x = 1; var z = (x += 1); z === 2. Actual: ' + (z)); +} + +//CHECK#2 +var x = 1; +var y = 1; +var z = (x += y); +if (z !== 2) { + $ERROR('#2: var x = 1; var y = 1; var z = (x += y); z === 2. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.5.js new file mode 100644 index 0000000000..56629d1679 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.5.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.5 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x -= y" +---*/ + +//CHECK#1 +var x = 1; +var z = (x -= 1); +if (z !== 0) { + $ERROR('#1: var x = 1; var z = (x -= 1); z === 0. Actual: ' + (z)); +} + +//CHECK#2 +var x = 1; +var y = 1; +var z = (x -= y); +if (z !== 0) { + $ERROR('#2: var x = 1; var y = 1; var z = (x -= y); z === 0. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.6.js new file mode 100644 index 0000000000..0e454566a0 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.6.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.6 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x <<= y" +---*/ + +//CHECK#1 +var x = 1; +var z = (x <<= 1); +if (z !== 2) { + $ERROR('#1: var x = 1; var z = (x <<= 1); z === 2. Actual: ' + (z)); +} + +//CHECK#2 +var x = 1; +var y = 1; +var z = (x <<= y); +if (z !== 2) { + $ERROR('#2: var x = 1; var y = 1; var z = (x <<= y); z === 2. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.7.js new file mode 100644 index 0000000000..9daa17f408 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.7.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.7 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x >>= y" +---*/ + +//CHECK#1 +var x = 4; +var z = (x >>= 1); +if (z !== 2) { + $ERROR('#1: var x = 4; var z = (x >>= 1); z === 2. Actual: ' + (z)); +} + +//CHECK#2 +var x = 4; +var y = 1; +var z = (x >>= y); +if (z !== 2) { + $ERROR('#2: var x = 4; var y = 1; var z = (x >>= y); z === 2. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.8.js new file mode 100644 index 0000000000..0dbce7c80b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.8.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.8 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x >>>= y" +---*/ + +//CHECK#1 +var x = 4; +var z = (x >>>= 1); +if (z !== 2) { + $ERROR('#1: var x = 4; var z = (x >>>= 1); z === 2. Actual: ' + (z)); +} + +//CHECK#2 +var x = 4; +var y = 1; +var z = (x >>>= y); +if (z !== 2) { + $ERROR('#2: var x = 4; var y = 1; var z = (x >>>= y); z === 2. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.9.js new file mode 100644 index 0000000000..8755f478fe --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T1.9.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T1.9 +description: > + Either Type is not Reference or GetBase is not null, check + opeartor is "x &= y" +---*/ + +//CHECK#1 +var x = 1; +var z = (x &= 1); +if (z !== 1) { + $ERROR('#1: var x = 1; var z = (x &= 1); z === 1. Actual: ' + (z)); +} + +//CHECK#2 +var x = 1; +var y = 1; +var z = (x &= y); +if (z !== 1) { + $ERROR('#2: var x = 1; var y = 1; var z = (x &= y); z === 1. Actual: ' + (z)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.1.js new file mode 100644 index 0000000000..87e3a2bb6d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.1.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.1 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x *= y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x *= y); + $ERROR('#1.1: var x = 1; x *= y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x *= y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.10.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.10.js new file mode 100644 index 0000000000..a2a668dc04 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.10.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.10 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x ^= y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x ^= y); + $ERROR('#1.1: var x = 1; x ^= y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x ^= y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.11.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.11.js new file mode 100644 index 0000000000..3343ef7a39 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.11.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.11 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x |= y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x |= y); + $ERROR('#1.1: var x = 1; x |= y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x |= y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.2.js new file mode 100644 index 0000000000..a2d173786e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.2.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.2 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x /= y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x /= y); + $ERROR('#1.1: var x = 1; x /= y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x /= y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.3.js new file mode 100644 index 0000000000..71bb8cb28e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.3.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.3 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x %= y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x %= y); + $ERROR('#1.1: var x = 1; x %= y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x %= y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.4.js new file mode 100644 index 0000000000..2b8290093b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.4.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.4 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x += y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x += y); + $ERROR('#1.1: var x = 1; x += y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x += y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.5.js new file mode 100644 index 0000000000..b3208c1bb1 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.5.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.5 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x -= y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x -= y); + $ERROR('#1.1: var x = 1; x -= y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x -= y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.6.js new file mode 100644 index 0000000000..3316f8f123 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.6.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.6 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x <<= y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x <<= y); + $ERROR('#1.1: var x = 1; x <<= y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x <<= y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.7.js new file mode 100644 index 0000000000..5a67088931 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.7.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.7 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x >>= y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x >>= y); + $ERROR('#1.1: var x = 1; x >>= y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x >>= y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.8.js new file mode 100644 index 0000000000..34101a5aca --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.8.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.8 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x >>>= y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x >>>= y); + $ERROR('#1.1: var x = 1; x >>>= y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x >>>= y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.9.js new file mode 100644 index 0000000000..92120c44ca --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T2.9.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T2.9 +description: > + If GetBase(AssigmentExpression) is null, throw ReferenceError. + Check operator is "x &= y" +---*/ + +//CHECK#1 +try { + var x = 1; + var z = (x &= y); + $ERROR('#1.1: var x = 1; x &= y throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: var x = 1; x &= y throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.1.js new file mode 100644 index 0000000000..61ff86ece2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.1.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.1 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x *= y" +---*/ + +//CHECK#1 +try { + var z = (x *= 1); + $ERROR('#1.1: x *= 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x *= 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.10.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.10.js new file mode 100644 index 0000000000..f6bbbd6a94 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.10.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.10 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x ^= y" +---*/ + +//CHECK#1 +try { + var z = (x ^= 1); + $ERROR('#1.1: x ^= 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x ^= 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.11.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.11.js new file mode 100644 index 0000000000..4d4267f8d2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.11.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.11 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x |= y" +---*/ + +//CHECK#1 +try { + var z = (x |= 1); + $ERROR('#1.1: x |= 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x |= 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.2.js new file mode 100644 index 0000000000..9a8feeb507 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.2.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.2 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x /= y" +---*/ + +//CHECK#1 +try { + var z = (x /= 1); + $ERROR('#1.1: x /= 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x /= 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.3.js new file mode 100644 index 0000000000..2a88fec711 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.3.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.3 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x %= y" +---*/ + +//CHECK#1 +try { + var z = (x %= 1); + $ERROR('#1.1: x %= 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x %= 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.4.js new file mode 100644 index 0000000000..b8baf8bc7a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.4.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.4 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x += y" +---*/ + +//CHECK#1 +try { + var z = (x += 1); + $ERROR('#1.1: x += 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x += 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.5.js new file mode 100644 index 0000000000..ab10e1dbf0 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.5.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.5 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x -= y" +---*/ + +//CHECK#1 +try { + var z = (x -= 1); + $ERROR('#1.1: x -= 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x -= 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.6.js new file mode 100644 index 0000000000..b793d94586 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.6.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.6 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x <<= y" +---*/ + +//CHECK#1 +try { + var z = (x <<= 1); + $ERROR('#1.1: x <<= 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x <<= 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.7.js new file mode 100644 index 0000000000..695e497b9a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.7.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.7 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x >>= y" +---*/ + +//CHECK#1 +try { + var z = (x >>= 1); + $ERROR('#1.1: x >>= 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x >>= 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.8.js new file mode 100644 index 0000000000..5daba94394 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.8.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.8 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x >>>= y" +---*/ + +//CHECK#1 +try { + var z = (x >>>= 1); + $ERROR('#1.1: x >>>= 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x >>>= 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.9.js new file mode 100644 index 0000000000..03a2eb34c6 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A2.1_T3.9.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator uses GetValue +es5id: 11.13.2_A2.1_T3.9 +description: > + If GetBase(LeftHandSideExpression) is null, throw ReferenceError. + Check operator is "x &= y" +---*/ + +//CHECK#1 +try { + var z = (x &= 1); + $ERROR('#1.1: x &= 1 throw ReferenceError. Actual: ' + (z)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x &= 1 throw ReferenceError. Actual: ' + (e)); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T1.js new file mode 100644 index 0000000000..3022b9d82a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T1.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T1 +description: Checking Expression and Variable statements for x *= y +---*/ + +//CHECK#1 +var x = 1; +x *= -1; +if (x !== -1) { + $ERROR('#1: var x = 1; x *= -1; x === -1. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = 1; +y *= -1; +if (y !== -1) { + $ERROR('#2: y = 1; y *= -1; y === -1. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T10.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T10.js new file mode 100644 index 0000000000..718b60f6be --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T10.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T10 +description: Checking Expression and Variable statements for x ^= y +---*/ + +//CHECK#1 +var x = 0; +x ^= 1; +if (x !== 1) { + $ERROR('#1: var x = 0; x ^= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = 1; +y ^= 0; +if (y !== 1) { + $ERROR('#2: y = 1; y ^= 0; y === 1. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T11.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T11.js new file mode 100644 index 0000000000..7160e9ae78 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T11.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T11 +description: Checking Expression and Variable statements for x |= y +---*/ + +//CHECK#1 +var x = 0; +x |= 1; +if (x !== 1) { + $ERROR('#1: var x = 0; x |= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = 1; +y |= 0; +if (y !== 1) { + $ERROR('#2: y = 1; y |= 0; y === 1. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T2.js new file mode 100644 index 0000000000..60c0ccbf62 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T2.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T2 +description: Checking Expression and Variable statements for x /= y +---*/ + +//CHECK#1 +var x = 1; +x /= -1; +if (x !== -1) { + $ERROR('#1: var x = 1; x /= -1; x === -1. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = 1; +y /= -1; +if (y !== -1) { + $ERROR('#2: y = 1; y /= -1; y === -1. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T3.js new file mode 100644 index 0000000000..73e14f237d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T3.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T3 +description: Checking Expression and Variable statements for x %= y +---*/ + +//CHECK#1 +var x = -1; +x %= 2; +if (x !== -1) { + $ERROR('#1: var x = -1; x %= 2; x === -1. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = -1; +y %= 2; +if (y !== -1) { + $ERROR('#2: y = -1; y %= 2; y === -1. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T4.js new file mode 100644 index 0000000000..e3610177f3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T4.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T4 +description: Checking Expression and Variable statements for x += y +---*/ + +//CHECK#1 +var x = 1; +x += 1; +if (x !== 2) { + $ERROR('#1: var x = 1; x += 1; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = 1; +y += 1; +if (y !== 2) { + $ERROR('#2: y = 1; y += 1; y === 2. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T5.js new file mode 100644 index 0000000000..26bc4d0c76 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T5.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T5 +description: Checking Expression and Variable statements for x -= y +---*/ + +//CHECK#1 +var x = -1; +x -= 1; +if (x !== -2) { + $ERROR('#1: var x = -1; x -= 1; x === -2. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = -1; +y -= 1; +if (y !== -2) { + $ERROR('#2: y = -1; y -= 1; y === -2. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T6.js new file mode 100644 index 0000000000..602f10a337 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T6.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T6 +description: Checking Expression and Variable statements for x <<= y +---*/ + +//CHECK#1 +var x = 1; +x <<= 1; +if (x !== 2) { + $ERROR('#1: var x = 1; x <<= 1; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = 1; +y <<= 1; +if (y !== 2) { + $ERROR('#2: y = 1; y <<= 1; y === 2. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T7.js new file mode 100644 index 0000000000..efc31d47ba --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T7.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T7 +description: Checking Expression and Variable statements for x >>= y +---*/ + +//CHECK#1 +var x = 4; +x >>= 1; +if (x !== 2) { + $ERROR('#1: var x = 4; x >>= 1; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = 4; +y >>= 1; +if (y !== 2) { + $ERROR('#2: y = 4; y >>= 1; y === 2. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T8.js new file mode 100644 index 0000000000..64e664b76c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T8.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T8 +description: Checking Expression and Variable statements for x >>>= y +---*/ + +//CHECK#1 +var x = 4; +x >>>= 1; +if (x !== 2) { + $ERROR('#1: var x = 4; x >>>= 1; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = 4; +y >>>= 1; +if (y !== 2) { + $ERROR('#2: y = 4; y >>>= 1; y === 2. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T9.js new file mode 100644 index 0000000000..4d656a28b1 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.1_T9.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y uses PutValue(x, x @ y) +es5id: 11.13.2_A3.1_T9 +description: Checking Expression and Variable statements for x &= y +---*/ + +//CHECK#1 +var x = 1; +x &= 1; +if (x !== 1) { + $ERROR('#1: var x = 1; x &= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +var y; +y = 1; +y &= 1; +if (y !== 1) { + $ERROR('#2: y = 1; y &= 1; y === 1. Actual: ' + (y)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T1.js new file mode 100644 index 0000000000..553f6a8fd4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T1.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T1 +description: Checking Expression and Variable statements for x *= y +---*/ + +//CHECK#1 +var x = 1; +var x1 = (x *= -1); +if (x1 !== -1) { + $ERROR('#1: var x = 1; var x1 = (x *= -1); x1 === -1. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = 1; +y1 = (y *= -1); +if (y1 !== -1) { + $ERROR('#2: y = 1; y1 = (y *= -1); y1 === -1. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T10.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T10.js new file mode 100644 index 0000000000..b3508b0417 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T10.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T10 +description: Checking Expression and Variable statements for x ^= y +---*/ + +//CHECK#1 +var x = 0; +var x1 = (x ^= 1); +if (x1 !== 1) { + $ERROR('#1: var x = 0; var x1 = (x ^= 1); x1 === 1. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = 1; +y1 = (y ^= 0); +if (y1 !== 1) { + $ERROR('#2: y = 1; y1 = (y ^= 0); y1 === 1. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T11.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T11.js new file mode 100644 index 0000000000..54bdf4bfa7 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T11.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T11 +description: Checking Expression and Variable statements for x |= y +---*/ + +//CHECK#1 +var x = 0; +var x1 = (x |= 1); +if (x1 !== 1) { + $ERROR('#1: var x = 0; var x1 = (x |= 1); x1 === 1. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = 1; +y1 = (y |= 0); +if (y1 !== 1) { + $ERROR('#2: y = 1; y1 = (y |= 0); y1 === 1. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T2.js new file mode 100644 index 0000000000..1e7beedd6a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T2.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T2 +description: Checking Expression and Variable statements for x /= y +---*/ + +//CHECK#1 +var x = 1; +var x1 = (x /= -1); +if (x1 !== -1) { + $ERROR('#1: var x = 1; var x1 = (x /= -1); x1 === -1. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = 1; +y1 = (y /= -1); +if (y1 !== -1) { + $ERROR('#2: y = 1; y1 = (y /= -1); y1 === -1. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T3.js new file mode 100644 index 0000000000..ee181eecef --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T3.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T3 +description: Checking Expression and Variable statements for x %= y +---*/ + +//CHECK#1 +var x = -1; +var x1 = (x %= 2); +if (x1 !== -1) { + $ERROR('#1: var x = -1; var x1 = (x %= 2); x1 === -1. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = -1; +y1 = (y %= 2); +if (y1 !== -1) { + $ERROR('#2: y = -1; y1 = (y %= 2); y1 === -1. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T4.js new file mode 100644 index 0000000000..fd2cb9f49e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T4.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T4 +description: Checking Expression and Variable statements for x += y +---*/ + +//CHECK#1 +var x = 1; +var x1 = (x += 1); +if (x1 !== 2) { + $ERROR('#1: var x = 1; var x1 = (x += 1); x1 === 2. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = 1; +y1 = (y += 1); +if (y1 !== 2) { + $ERROR('#2: y = 1; y1 = (y += 1); y1 === 2. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T5.js new file mode 100644 index 0000000000..186503156f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T5.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T5 +description: Checking Expression and Variable statements for x -= y +---*/ + +//CHECK#1 +var x = -1; +var x1 = (x -= 1); +if (x1 !== -2) { + $ERROR('#1: var x = -1; var x1 = (x -= 1); x1 === -2. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = -1; +y1 = (y -= 1); +if (y1 !== -2) { + $ERROR('#2: y = -1; y1 = (y -= 1); y1 === -2. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T6.js new file mode 100644 index 0000000000..b031055018 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T6.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T6 +description: Checking Expression and Variable statements for x <<= y +---*/ + +//CHECK#1 +var x = 1; +var x1 = (x <<= 1); +if (x1 !== 2) { + $ERROR('#1: var x = 1; var x1 = (x <<= 1); x1 === 2. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = 1; +y1 = (y <<= 1); +if (y1 !== 2) { + $ERROR('#2: y = 1; y1 = (y <<= 1); y1 === 2. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T7.js new file mode 100644 index 0000000000..0daba1a240 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T7.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T7 +description: Checking Expression and Variable statements for x >>= y +---*/ + +//CHECK#1 +var x = 4; +var x1 = (x >>= 1); +if (x1 !== 2) { + $ERROR('#1: var x = 4; var x1 = (x >>= 1); x1 === 2. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = 4; +y1 = (y >>= 1); +if (y1 !== 2) { + $ERROR('#2: y = 4; y1 = (y >>= 1); y1 === 2. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T8.js new file mode 100644 index 0000000000..ed96bb64df --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T8.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T8 +description: Checking Expression and Variable statements for x >>>= y +---*/ + +//CHECK#1 +var x = 4; +var x1 = (x >>>= 1); +if (x1 !== 2) { + $ERROR('#1: var x = 4; var x1 = (x >>>= 1); x1 === 2. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = 4; +y1 = (y >>>= 1); +if (y1 !== 2) { + $ERROR('#2: y = 4; y1 = (y >>>= 1); y1 === 2. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T9.js new file mode 100644 index 0000000000..671d7909a4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A3.2_T9.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Operator x @= y returns x @ y +es5id: 11.13.2_A3.2_T9 +description: Checking Expression and Variable statements for x &= y +---*/ + +//CHECK#1 +var x = 1; +var x1 = (x &= 1); +if (x1 !== 1) { + $ERROR('#1: var x = 1; var x1 = (x &= 1); x1 === 1. Actual: ' + (x1)); +} + +//CHECK#2 +var y; +var y1; +y = 1; +y1 = (y &= 1); +if (y1 !== 1) { + $ERROR('#2: y = 1; y1 = (y &= 1); y1 === 1. Actual: ' + (y1)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.1.js new file mode 100644 index 0000000000..06c17bee9d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x ^= true; +if (x !== 0) { + $ERROR('#1: x = true; x ^= true; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x ^= true; +if (x !== 0) { + $ERROR('#2: x = new Boolean(true); x ^= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x ^= new Boolean(true); +if (x !== 0) { + $ERROR('#3: x = true; x ^= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x ^= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = new Boolean(true); x ^= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.2.js new file mode 100644 index 0000000000..199cadeea9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x ^= 1; +if (x !== 0) { + $ERROR('#1: x = 1; x ^= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x ^= 1; +if (x !== 0) { + $ERROR('#2: x = new Number(1); x ^= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x ^= new Number(1); +if (x !== 0) { + $ERROR('#3: x = 1; x ^= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x ^= new Number(1); +if (x !== 0) { + $ERROR('#4: x = new Number(1); x ^= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.3.js new file mode 100644 index 0000000000..b161603fb5 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.3.js @@ -0,0 +1,54 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T1.3 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x ^= "1"; +if (x !== 0) { + $ERROR('#1: x = "1"; x ^= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x ^= "1"; +if (x !== 0) { + $ERROR('#2: x = new String("1"); x ^= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x ^= new String("1"); +if (x !== 0) { + $ERROR('#3: x = "1"; x ^= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x ^= new String("1"); +if (x !== 0) { + $ERROR('#4: x = new String("1"); x ^= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = "x"; +x ^= "1"; +if (x !== 1) { + $ERROR('#5: x = "x"; x ^= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x ^= "x"; +if (x !== 1) { + $ERROR('#6: x = "1"; x ^= "x"; x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.4.js new file mode 100644 index 0000000000..c9245d8397 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T1.4.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T1.4 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x ^= undefined; +if (x !== 0) { + $ERROR('#1: x = null; x ^= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x ^= null; +if (x !== 0) { + $ERROR('#2: x = undefined; x ^= null; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x ^= undefined; +if (x !== 0) { + $ERROR('#3: x = undefined; x ^= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x ^= null; +if (x !== 0) { + $ERROR('#4: x = null; x ^= null; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.1.js new file mode 100644 index 0000000000..b6cbf8da97 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x ^= 1; +if (x !== 0) { + $ERROR('#1: x = true; x ^= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x ^= true; +if (x !== 0) { + $ERROR('#2: x = 1; x ^= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x ^= 1; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x ^= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x ^= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = 1; x ^= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x ^= new Number(1); +if (x !== 0) { + $ERROR('#5: x = true; x ^= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x ^= true; +if (x !== 0) { + $ERROR('#6: x = new Number(1); x ^= true; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x ^= new Number(1); +if (x !== 0) { + $ERROR('#7: x = new Boolean(true); x ^= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x ^= new Boolean(true); +if (x !== 0) { + $ERROR('#8: x = new Number(1); x ^= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.2.js new file mode 100644 index 0000000000..9cf8d885e9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.2.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x ^= 1; +if (x !== 0) { + $ERROR('#1: x = "1"; x ^= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x ^= "1"; +if (x !== 0) { + $ERROR('#2: x = 1; x ^= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x ^= 1; +if (x !== 0) { + $ERROR('#3: x = new String("1"); x ^= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x ^= new String("1"); +if (x !== 0) { + $ERROR('#4: x = 1; x ^= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x ^= new Number(1); +if (x !== 0) { + $ERROR('#5: x = "1"; x ^= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x ^= "1"; +if (x !== 0) { + $ERROR('#6: x = new Number(1); x ^= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x ^= new Number(1); +if (x !== 0) { + $ERROR('#7: x = new String("1"); x ^= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x ^= new String("1"); +if (x !== 0) { + $ERROR('#8: x = new Number(1); x ^= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#9 +x = "x"; +x ^= 1; +if (x !== 1) { + $ERROR('#9: x = "x"; x ^= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x ^= "x"; +if (x !== 1) { + $ERROR('#10: x = 1; x ^= "x"; x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.3.js new file mode 100644 index 0000000000..2a47bbf7a2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x ^= null; +if (x !== 1) { + $ERROR('#1: x = 1; x ^= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x ^= 1; +if (x !== 1) { + $ERROR('#2: x = null; x ^= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x ^= null; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x ^= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x ^= new Number(1); +if (x !== 1) { + $ERROR('#4: x = null; x ^= new Number(1); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.4.js new file mode 100644 index 0000000000..2f80f50e49 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x ^= undefined; +if (x !== 1) { + $ERROR('#1: x = 1; x ^= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x ^= 1; +if (x !== 1) { + $ERROR('#2: x = undefined; x ^= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x ^= undefined; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x ^= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x ^= new Number(1); +if (x !== 1) { + $ERROR('#4: x = undefined; x ^= new Number(1); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.5.js new file mode 100644 index 0000000000..0c2deb1e29 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.5.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x ^= "1"; +if (x !== 0) { + $ERROR('#1: x = true; x ^= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x ^= true; +if (x !== 0) { + $ERROR('#2: x = "1"; x ^= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x ^= "1"; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x ^= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x ^= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = "1"; x ^= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x ^= new String("1"); +if (x !== 0) { + $ERROR('#5: x = true; x ^= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x ^= true; +if (x !== 0) { + $ERROR('#6: x = new String("1"); x ^= true; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x ^= new String("1"); +if (x !== 0) { + $ERROR('#7: x = new Boolean(true); x ^= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x ^= new Boolean(true); +if (x !== 0) { + $ERROR('#8: x = new String("1"); x ^= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.6.js new file mode 100644 index 0000000000..fce8c90f85 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x ^= undefined; +if (x !== 1) { + $ERROR('#1: x = "1"; x ^= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x ^= "1"; +if (x !== 1) { + $ERROR('#2: x = undefined; x ^= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x ^= undefined; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x ^= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x ^= new String("1"); +if (x !== 1) { + $ERROR('#4: x = undefined; x ^= new String("1"); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.7.js new file mode 100644 index 0000000000..076e86e894 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x ^= null; +if (x !== 1) { + $ERROR('#1: x = "1"; x ^= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x ^= "1"; +if (x !== 1) { + $ERROR('#2: x = null; x ^= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x ^= null; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x ^= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x ^= new String("1"); +if (x !== 1) { + $ERROR('#4: x = null; x ^= new String("1"); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.8.js new file mode 100644 index 0000000000..c511d763c2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x ^= undefined; +if (x !== 1) { + $ERROR('#1: x = true; x ^= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x ^= true; +if (x !== 1) { + $ERROR('#2: x = undefined; x ^= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x ^= undefined; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x ^= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x ^= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = undefined; x ^= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.9.js new file mode 100644 index 0000000000..76221ab22d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.10_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x ^= y is the same as x = x ^ y +es5id: 11.13.2_A4.10_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x ^= null; +if (x !== 1) { + $ERROR('#1: x = true; x ^= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x ^= true; +if (x !== 1) { + $ERROR('#2: x = null; x ^= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x ^= null; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x ^= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x ^= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = null; x ^= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.1.js new file mode 100644 index 0000000000..ae977ea716 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x |= true; +if (x !== 1) { + $ERROR('#1: x = true; x |= true; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x |= true; +if (x !== 1) { + $ERROR('#2: x = new Boolean(true); x |= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x |= new Boolean(true); +if (x !== 1) { + $ERROR('#3: x = true; x |= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x |= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = new Boolean(true); x |= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.2.js new file mode 100644 index 0000000000..4d41566ebf --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x |= 1; +if (x !== 1) { + $ERROR('#1: x = 1; x |= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x |= 1; +if (x !== 1) { + $ERROR('#2: x = new Number(1); x |= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x |= new Number(1); +if (x !== 1) { + $ERROR('#3: x = 1; x |= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x |= new Number(1); +if (x !== 1) { + $ERROR('#4: x = new Number(1); x |= new Number(1); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.3.js new file mode 100644 index 0000000000..c8ce5094eb --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.3.js @@ -0,0 +1,54 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T1.3 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x |= "1"; +if (x !== 1) { + $ERROR('#1: x = "1"; x |= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x |= "1"; +if (x !== 1) { + $ERROR('#2: x = new String("1"); x |= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x |= new String("1"); +if (x !== 1) { + $ERROR('#3: x = "1"; x |= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x |= new String("1"); +if (x !== 1) { + $ERROR('#4: x = new String("1"); x |= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = "x"; +x |= "1"; +if (x !== 1) { + $ERROR('#5: x = "x"; x |= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x |= "x"; +if (x !== 1) { + $ERROR('#6: x = "1"; x |= "x"; x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.4.js new file mode 100644 index 0000000000..340a082edc --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T1.4.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T1.4 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x |= undefined; +if (x !== 0) { + $ERROR('#1: x = null; x |= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x |= null; +if (x !== 0) { + $ERROR('#2: x = undefined; x |= null; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x |= undefined; +if (x !== 0) { + $ERROR('#3: x = undefined; x |= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x |= null; +if (x !== 0) { + $ERROR('#4: x = null; x |= null; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.1.js new file mode 100644 index 0000000000..1d03fd6db7 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x |= 1; +if (x !== 1) { + $ERROR('#1: x = true; x |= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x |= true; +if (x !== 1) { + $ERROR('#2: x = 1; x |= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x |= 1; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x |= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x |= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = 1; x |= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x |= new Number(1); +if (x !== 1) { + $ERROR('#5: x = true; x |= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x |= true; +if (x !== 1) { + $ERROR('#6: x = new Number(1); x |= true; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x |= new Number(1); +if (x !== 1) { + $ERROR('#7: x = new Boolean(true); x |= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x |= new Boolean(true); +if (x !== 1) { + $ERROR('#8: x = new Number(1); x |= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.2.js new file mode 100644 index 0000000000..4a54706f17 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.2.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x |= 1; +if (x !== 1) { + $ERROR('#1: x = "1"; x |= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x |= "1"; +if (x !== 1) { + $ERROR('#2: x = 1; x |= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x |= 1; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x |= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x |= new String("1"); +if (x !== 1) { + $ERROR('#4: x = 1; x |= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x |= new Number(1); +if (x !== 1) { + $ERROR('#5: x = "1"; x |= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x |= "1"; +if (x !== 1) { + $ERROR('#6: x = new Number(1); x |= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x |= new Number(1); +if (x !== 1) { + $ERROR('#7: x = new String("1"); x |= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x |= new String("1"); +if (x !== 1) { + $ERROR('#8: x = new Number(1); x |= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#9 +x = "x"; +x |= 1; +if (x !== 1) { + $ERROR('#9: x = "x"; x |= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x |= "x"; +if (x !== 1) { + $ERROR('#10: x = 1; x |= "x"; x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.3.js new file mode 100644 index 0000000000..090f2109f5 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x |= null; +if (x !== 1) { + $ERROR('#1: x = 1; x |= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x |= 1; +if (x !== 1) { + $ERROR('#2: x = null; x |= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x |= null; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x |= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x |= new Number(1); +if (x !== 1) { + $ERROR('#4: x = null; x |= new Number(1); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.4.js new file mode 100644 index 0000000000..9e23a9b82e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x |= undefined; +if (x !== 1) { + $ERROR('#1: x = 1; x |= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x |= 1; +if (x !== 1) { + $ERROR('#2: x = undefined; x |= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x |= undefined; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x |= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x |= new Number(1); +if (x !== 1) { + $ERROR('#4: x = undefined; x |= new Number(1); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.5.js new file mode 100644 index 0000000000..f201a70d5e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.5.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x |= "1"; +if (x !== 1) { + $ERROR('#1: x = true; x |= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x |= true; +if (x !== 1) { + $ERROR('#2: x = "1"; x |= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x |= "1"; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x |= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x |= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = "1"; x |= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x |= new String("1"); +if (x !== 1) { + $ERROR('#5: x = true; x |= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x |= true; +if (x !== 1) { + $ERROR('#6: x = new String("1"); x |= true; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x |= new String("1"); +if (x !== 1) { + $ERROR('#7: x = new Boolean(true); x |= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x |= new Boolean(true); +if (x !== 1) { + $ERROR('#8: x = new String("1"); x |= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.6.js new file mode 100644 index 0000000000..3542790a52 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x |= undefined; +if (x !== 1) { + $ERROR('#1: x = "1"; x |= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x |= "1"; +if (x !== 1) { + $ERROR('#2: x = undefined; x |= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x |= undefined; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x |= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x |= new String("1"); +if (x !== 1) { + $ERROR('#4: x = undefined; x |= new String("1"); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.7.js new file mode 100644 index 0000000000..78d4c955aa --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x |= null; +if (x !== 1) { + $ERROR('#1: x = "1"; x |= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x |= "1"; +if (x !== 1) { + $ERROR('#2: x = null; x |= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x |= null; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x |= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x |= new String("1"); +if (x !== 1) { + $ERROR('#4: x = null; x |= new String("1"); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.8.js new file mode 100644 index 0000000000..e4d0b27381 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x |= undefined; +if (x !== 1) { + $ERROR('#1: x = true; x |= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x |= true; +if (x !== 1) { + $ERROR('#2: x = undefined; x |= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x |= undefined; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x |= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x |= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = undefined; x |= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.9.js new file mode 100644 index 0000000000..f1a0e1d6d0 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.11_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x |= y is the same as x = x | y +es5id: 11.13.2_A4.11_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x |= null; +if (x !== 1) { + $ERROR('#1: x = true; x |= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x |= true; +if (x !== 1) { + $ERROR('#2: x = null; x |= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x |= null; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x |= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x |= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = null; x |= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.1.js new file mode 100644 index 0000000000..4d46ba42e5 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x *= true; +if (x !== 1) { + $ERROR('#1: x = true; x *= true; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x *= true; +if (x !== 1) { + $ERROR('#2: x = new Boolean(true); x *= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x *= new Boolean(true); +if (x !== 1) { + $ERROR('#3: x = true; x *= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x *= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = new Boolean(true); x *= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.2.js new file mode 100644 index 0000000000..23fdc020e6 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x *= 1; +if (x !== 1) { + $ERROR('#1: x = 1; x *= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x *= 1; +if (x !== 1) { + $ERROR('#2: x = new Number(1); x *= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x *= new Number(1); +if (x !== 1) { + $ERROR('#3: x = 1; x *= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x *= new Number(1); +if (x !== 1) { + $ERROR('#4: x = new Number(1); x *= new Number(1); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.3.js new file mode 100644 index 0000000000..296e409255 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.3.js @@ -0,0 +1,54 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T1.3 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x *= "1"; +if (x !== 1) { + $ERROR('#1: x = "1"; x *= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x *= "1"; +if (x !== 1) { + $ERROR('#2: x = new String("1"); x *= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x *= new String("1"); +if (x !== 1) { + $ERROR('#3: x = "1"; x *= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x *= new String("1"); +if (x !== 1) { + $ERROR('#4: x = new String("1"); x *= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = "x"; +x *= "1"; +if (isNaN(x) !== true) { + $ERROR('#5: x = "x"; x *= "1"; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x *= "x"; +if (isNaN(x) !== true) { + $ERROR('#6: x = "1"; x *= "x"; x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.4.js new file mode 100644 index 0000000000..743ba1fd3f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T1.4.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T1.4 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x *= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = null; x *= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x *= null; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x *= null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x *= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = undefined; x *= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x *= null; +if (x !== 0) { + $ERROR('#4: x = null; x *= null; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.1.js new file mode 100644 index 0000000000..0c7541f55b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Number (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x *= 1; +if (x !== 1) { + $ERROR('#1: x = true; x *= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x *= true; +if (x !== 1) { + $ERROR('#2: x = 1; x *= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x *= 1; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x *= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x *= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = 1; x *= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x *= new Number(1); +if (x !== 1) { + $ERROR('#5: x = true; x *= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x *= true; +if (x !== 1) { + $ERROR('#6: x = new Number(1); x *= true; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x *= new Number(1); +if (x !== 1) { + $ERROR('#7: x = new Boolean(true); x *= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x *= new Boolean(true); +if (x !== 1) { + $ERROR('#8: x = new Number(1); x *= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.2.js new file mode 100644 index 0000000000..878ba7045c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.2.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x *= 1; +if (x !== 1) { + $ERROR('#1: x = "1"; x *= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x *= "1"; +if (x !== 1) { + $ERROR('#2: x = 1; x *= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x *= 1; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x *= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x *= new String("1"); +if (x !== 1) { + $ERROR('#4: x = 1; x *= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x *= new Number(1); +if (x !== 1) { + $ERROR('#5: x = "1"; x *= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x *= "1"; +if (x !== 1) { + $ERROR('#6: x = new Number(1); x *= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x *= new Number(1); +if (x !== 1) { + $ERROR('#7: x = new String("1"); x *= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x *= new String("1"); +if (x !== 1) { + $ERROR('#8: x = new Number(1); x *= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#9 +x = "x"; +x *= 1; +if (isNaN(x) !== true) { + $ERROR('#9: x = "x"; x *= 1; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x *= "x"; +if (isNaN(x) !== true) { + $ERROR('#10: x = 1; x *= "x"; x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.3.js new file mode 100644 index 0000000000..47c049f8be --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x *= null; +if (x !== 0) { + $ERROR('#1: x = 1; x *= null; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x *= 1; +if (x !== 0) { + $ERROR('#2: x = null; x *= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x *= null; +if (x !== 0) { + $ERROR('#3: x = new Number(1); x *= null; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x *= new Number(1); +if (x !== 0) { + $ERROR('#4: x = null; x *= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.4.js new file mode 100644 index 0000000000..397e0f0534 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x *= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = 1; x *= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x *= 1; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x *= 1; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x *= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Number(1); x *= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x *= new Number(1); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x *= new Number(1); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.5.js new file mode 100644 index 0000000000..ed90b5bbf1 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.5.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) amd Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x *= "1"; +if (x !== 1) { + $ERROR('#1: x = true; x *= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x *= true; +if (x !== 1) { + $ERROR('#2: x = "1"; x *= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x *= "1"; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x *= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x *= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = "1"; x *= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x *= new String("1"); +if (x !== 1) { + $ERROR('#5: x = true; x *= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x *= true; +if (x !== 1) { + $ERROR('#6: x = new String("1"); x *= true; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x *= new String("1"); +if (x !== 1) { + $ERROR('#7: x = new Boolean(true); x *= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x *= new Boolean(true); +if (x !== 1) { + $ERROR('#8: x = new String("1"); x *= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.6.js new file mode 100644 index 0000000000..16fb46490a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + primitive String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x *= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = "1"; x *= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x *= "1"; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x *= "1"; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x *= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new String("1"); x *= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x *= new String("1"); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x *= new String("1"); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.7.js new file mode 100644 index 0000000000..dfce163614 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x *= null; +if (x !== 0) { + $ERROR('#1: x = "1"; x *= null; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x *= "1"; +if (x !== 0) { + $ERROR('#2: x = null; x *= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x *= null; +if (x !== 0) { + $ERROR('#3: x = new String("1"); x *= null; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x *= new String("1"); +if (x !== 0) { + $ERROR('#4: x = null; x *= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.8.js new file mode 100644 index 0000000000..11f4d3db34 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x *= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = true; x *= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x *= true; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x *= true; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x *= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Boolean(true); x *= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x *= new Boolean(true); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x *= new Boolean(true); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.9.js new file mode 100644 index 0000000000..24a8e7eee5 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.1_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x *= y is the same as the production x = x * y +es5id: 11.13.2_A4.1_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x *= null; +if (x !== 0) { + $ERROR('#1: x = true; x *= null; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x *= true; +if (x !== 0) { + $ERROR('#2: x = null; x *= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x *= null; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x *= null; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x *= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = null; x *= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.1.js new file mode 100644 index 0000000000..8f605be3d2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x /= true; +if (x !== 1) { + $ERROR('#1: x = true; x /= true; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x /= true; +if (x !== 1) { + $ERROR('#2: x = new Boolean(true); x /= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x /= new Boolean(true); +if (x !== 1) { + $ERROR('#3: x = true; x /= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x /= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = new Boolean(true); x /= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.2.js new file mode 100644 index 0000000000..98f7e9646b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x /= 1; +if (x !== 1) { + $ERROR('#1: x = 1; x /= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x /= 1; +if (x !== 1) { + $ERROR('#2: x = new Number(1); x /= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x /= new Number(1); +if (x !== 1) { + $ERROR('#3: x = 1; x /= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x /= new Number(1); +if (x !== 1) { + $ERROR('#4: x = new Number(1); x /= new Number(1); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.3.js new file mode 100644 index 0000000000..8c9ff391cf --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.3.js @@ -0,0 +1,54 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T1.3 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x /= "1"; +if (x !== 1) { + $ERROR('#1: x = "1"; x /= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x /= "1"; +if (x !== 1) { + $ERROR('#2: x = new String("1"); x /= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x /= new String("1"); +if (x !== 1) { + $ERROR('#3: x = "1"; x /= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x /= new String("1"); +if (x !== 1) { + $ERROR('#4: x = new String("1"); x /= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = "x"; +x /= "1"; +if (isNaN(x) !== true) { + $ERROR('#5: x = "x"; x /= "1"; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x /= "x"; +if (isNaN(x) !== true) { + $ERROR('#6: x = "1"; x /= "x"; x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.4.js new file mode 100644 index 0000000000..75efee1b0e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T1.4.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T1.4 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x /= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = null; x /= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x /= null; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x /= null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x /= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = undefined; x /= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x /= null; +if (isNaN(x) !== true) { + $ERROR('#4: x = null; x /= null; x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.1.js new file mode 100644 index 0000000000..0716feee66 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x /= 1; +if (x !== 1) { + $ERROR('#1: x = true; x /= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x /= true; +if (x !== 1) { + $ERROR('#2: x = 1; x /= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x /= 1; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x /= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x /= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = 1; x /= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x /= new Number(1); +if (x !== 1) { + $ERROR('#5: x = true; x /= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x /= true; +if (x !== 1) { + $ERROR('#6: x = new Number(1); x /= true; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x /= new Number(1); +if (x !== 1) { + $ERROR('#7: x = new Boolean(true); x /= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x /= new Boolean(true); +if (x !== 1) { + $ERROR('#8: x = new Number(1); x /= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.2.js new file mode 100644 index 0000000000..925a2b6e0e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.2.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x /= 1; +if (x !== 1) { + $ERROR('#1: x = "1"; x /= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x /= "1"; +if (x !== 1) { + $ERROR('#2: x = 1; x /= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x /= 1; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x /= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x /= new String("1"); +if (x !== 1) { + $ERROR('#4: x = 1; x /= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x /= new Number(1); +if (x !== 1) { + $ERROR('#5: x = "1"; x /= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x /= "1"; +if (x !== 1) { + $ERROR('#6: x = new Number(1); x /= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x /= new Number(1); +if (x !== 1) { + $ERROR('#7: x = new String("1"); x /= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x /= new String("1"); +if (x !== 1) { + $ERROR('#8: x = new Number(1); x /= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#9 +x = "x"; +x /= 1; +if (isNaN(x) !== true) { + $ERROR('#9: x = "x"; x /= 1; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x /= "x"; +if (isNaN(x) !== true) { + $ERROR('#10: x = 1; x /= "x"; x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.3.js new file mode 100644 index 0000000000..62c3b39b1c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x /= null; +if (x !== Number.POSITIVE_INFINITY) { + $ERROR('#1: x = 1; x /= null; x === +Infinity. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x /= 1; +if (x !== 0) { + $ERROR('#2: x = null; x /= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x /= null; +if (x !== Number.POSITIVE_INFINITY) { + $ERROR('#3: x = new Number(1); x /= null; x === +Infinity. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x /= new Number(1); +if (x !== 0) { + $ERROR('#4: x = null; x /= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.4.js new file mode 100644 index 0000000000..690a5329ad --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x /= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = 1; x /= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x /= 1; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x /= 1; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x /= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Number(1); x /= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x /= new Number(1); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x /= new Number(1); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.5.js new file mode 100644 index 0000000000..4fb6ce8404 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.5.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x /= "1"; +if (x !== 1) { + $ERROR('#1: x = true; x /= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x /= true; +if (x !== 1) { + $ERROR('#2: x = "1"; x /= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x /= "1"; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x /= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x /= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = "1"; x /= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x /= new String("1"); +if (x !== 1) { + $ERROR('#5: x = true; x /= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x /= true; +if (x !== 1) { + $ERROR('#6: x = new String("1"); x /= true; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x /= new String("1"); +if (x !== 1) { + $ERROR('#7: x = new Boolean(true); x /= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x /= new Boolean(true); +if (x !== 1) { + $ERROR('#8: x = new String("1"); x /= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.6.js new file mode 100644 index 0000000000..c811310ccb --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x /= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = "1"; x /= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x /= "1"; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x /= "1"; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x /= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new String("1"); x /= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x /= new String("1"); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x /= new String("1"); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.7.js new file mode 100644 index 0000000000..709aeb7940 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x /= null; +if (x !== Number.POSITIVE_INFINITY) { + $ERROR('#1: x = "1"; x /= null; x === +Infinity. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x /= "1"; +if (x !== 0) { + $ERROR('#2: x = null; x /= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x /= null; +if (x !== Number.POSITIVE_INFINITY) { + $ERROR('#3: x = new String("1"); x /= null; x === +Infinity. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x /= new String("1"); +if (x !== 0) { + $ERROR('#4: x = null; x /= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.8.js new file mode 100644 index 0000000000..9d997e90ad --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x /= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = true; x /= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x /= true; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x /= true; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x /= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Boolean(true); x /= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x /= new Boolean(true); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x /= new Boolean(true); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.9.js new file mode 100644 index 0000000000..1c07d8d070 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.2_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x /= y is the same as x = x / y +es5id: 11.13.2_A4.2_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x /= null; +if (x !== Number.POSITIVE_INFINITY) { + $ERROR('#1: x = true; x /= null; x === +Infinity. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x /= true; +if (x !== 0) { + $ERROR('#2: x = null; x /= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x /= null; +if (x !== Number.POSITIVE_INFINITY) { + $ERROR('#3: x = new Boolean(true); x /= null; x === +Infinity. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x /= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = null; x /= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.1.js new file mode 100644 index 0000000000..8f211acdd3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x %= true; +if (x !== 0) { + $ERROR('#1: x = true; x %= true; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x %= true; +if (x !== 0) { + $ERROR('#2: x = new Boolean(true); x %= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x %= new Boolean(true); +if (x !== 0) { + $ERROR('#3: x = true; x %= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x %= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = new Boolean(true); x %= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.2.js new file mode 100644 index 0000000000..e833367f08 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x %= 1; +if (x !== 0) { + $ERROR('#1: x = 1; x %= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x %= 1; +if (x !== 0) { + $ERROR('#2: x = new Number(1); x %= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x %= new Number(1); +if (x !== 0) { + $ERROR('#3: x = 1; x %= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x %= new Number(1); +if (x !== 0) { + $ERROR('#4: x = new Number(1); x %= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.3.js new file mode 100644 index 0000000000..27e83b25bf --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.3.js @@ -0,0 +1,54 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T1.3 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x %= "1"; +if (x !== 0) { + $ERROR('#1: x = "1"; x %= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x %= "1"; +if (x !== 0) { + $ERROR('#2: x = new String("1"); x %= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x %= new String("1"); +if (x !== 0) { + $ERROR('#3: x = "1"; x %= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x %= new String("1"); +if (x !== 0) { + $ERROR('#4: x = new String("1"); x %= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = "x"; +x %= "1"; +if (isNaN(x) !== true) { + $ERROR('#5: x = "x"; x %= "1"; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x %= "x"; +if (isNaN(x) !== true) { + $ERROR('#6: x = "1"; x %= "x"; x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.4.js new file mode 100644 index 0000000000..3896c37dc8 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T1.4.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T1.4 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x %= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = null; x %= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x %= null; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x %= null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x %= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = undefined; x %= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x %= null; +if (isNaN(x) !== true) { + $ERROR('#4: x = null; x %= null; x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.1.js new file mode 100644 index 0000000000..3b0829a486 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x %= 1; +if (x !== 0) { + $ERROR('#1: x = true; x %= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x %= true; +if (x !== 0) { + $ERROR('#2: x = 1; x %= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x %= 1; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x %= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x %= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = 1; x %= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x %= new Number(1); +if (x !== 0) { + $ERROR('#5: x = true; x %= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x %= true; +if (x !== 0) { + $ERROR('#6: x = new Number(1); x %= true; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x %= new Number(1); +if (x !== 0) { + $ERROR('#7: x = new Boolean(true); x %= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x %= new Boolean(true); +if (x !== 0) { + $ERROR('#8: x = new Number(1); x %= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.2.js new file mode 100644 index 0000000000..74638f988a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.2.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x %= 1; +if (x !== 0) { + $ERROR('#1: x = "1"; x %= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x %= "1"; +if (x !== 0) { + $ERROR('#2: x = 1; x %= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x %= 1; +if (x !== 0) { + $ERROR('#3: x = new String("1"); x %= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x %= new String("1"); +if (x !== 0) { + $ERROR('#4: x = 1; x %= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x %= new Number(1); +if (x !== 0) { + $ERROR('#5: x = "1"; x %= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x %= "1"; +if (x !== 0) { + $ERROR('#6: x = new Number(1); x %= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x %= new Number(1); +if (x !== 0) { + $ERROR('#7: x = new String("1"); x %= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x %= new String("1"); +if (x !== 0) { + $ERROR('#8: x = new Number(1); x %= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#9 +x = "x"; +x %= 1; +if (isNaN(x) !== true) { + $ERROR('#9: x = "x"; x %= 1; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x %= "x"; +if (isNaN(x) !== true) { + $ERROR('#10: x = 1; x %= "x"; x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.3.js new file mode 100644 index 0000000000..e8f0405cdb --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x %= null; +if (isNaN(x) !== true) { + $ERROR('#1: x = 1; x %= null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x %= 1; +if (x !== 0) { + $ERROR('#2: x = null; x %= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x %= null; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Number(1); x %= null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x %= new Number(1); +if (x !== 0) { + $ERROR('#4: x = null; x %= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.4.js new file mode 100644 index 0000000000..de74cd6362 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x %= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = 1; x %= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x %= 1; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x %= 1; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x %= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Number(1); x %= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x %= new Number(1); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x %= new Number(1); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.5.js new file mode 100644 index 0000000000..830336343d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.5.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x %= "1"; +if (x !== 0) { + $ERROR('#1: x = true; x %= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x %= true; +if (x !== 0) { + $ERROR('#2: x = "1"; x %= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x %= "1"; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x %= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x %= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = "1"; x %= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x %= new String("1"); +if (x !== 0) { + $ERROR('#5: x = true; x %= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x %= true; +if (x !== 0) { + $ERROR('#6: x = new String("1"); x %= true; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x %= new String("1"); +if (x !== 0) { + $ERROR('#7: x = new Boolean(true); x %= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x %= new Boolean(true); +if (x !== 0) { + $ERROR('#8: x = new String("1"); x %= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.6.js new file mode 100644 index 0000000000..1c4769000d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x %= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = "1"; x %= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x %= "1"; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x %= "1"; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x %= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new String("1"); x %= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x %= new String("1"); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x %= new String("1"); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.7.js new file mode 100644 index 0000000000..608e404513 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x %= null; +if (isNaN(x) !== true) { + $ERROR('#1: x = "1"; x %= null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x %= "1"; +if (x !== 0) { + $ERROR('#2: x = null; x %= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x %= null; +if (isNaN(x) !== true) { + $ERROR('#3: x = new String("1"); x %= null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x %= new String("1"); +if (x !== 0) { + $ERROR('#4: x = null; x %= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.8.js new file mode 100644 index 0000000000..4a49762b90 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x %= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = true; x %= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x %= true; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x %= true; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x %= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Boolean(true); x %= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x %= new Boolean(true); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x %= new Boolean(true); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.9.js new file mode 100644 index 0000000000..ea1a7bd80a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.3_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x %= y is the same as x = x % y +es5id: 11.13.2_A4.3_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x %= null; +if (isNaN(x) !== true) { + $ERROR('#1: x = true; x %= null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x %= true; +if (x !== 0) { + $ERROR('#2: x = null; x %= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x %= null; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Boolean(true); x %= null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x %= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = null; x %= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.1.js new file mode 100644 index 0000000000..5cc8ffa588 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x += true; +if (x !== 2) { + $ERROR('#1: x = true; x += true; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x += true; +if (x !== 2) { + $ERROR('#2: x = new Boolean(true); x += true; x === 2. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x += new Boolean(true); +if (x !== 2) { + $ERROR('#3: x = true; x += new Boolean(true); x === 2. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x += new Boolean(true); +if (x !== 2) { + $ERROR('#4: x = new Boolean(true); x += new Boolean(true); x === 2. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.2.js new file mode 100644 index 0000000000..22bac28faf --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x += 1; +if (x !== 2) { + $ERROR('#1: x = 1; x += 1; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x += 1; +if (x !== 2) { + $ERROR('#2: x = new Number(1); x += 1; x === 2. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x += new Number(1); +if (x !== 2) { + $ERROR('#3: x = 1; x += new Number(1); x === 2. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x += new Number(1); +if (x !== 2) { + $ERROR('#4: x = new Number(1); x += new Number(1); x === 2. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.3.js new file mode 100644 index 0000000000..d83dca03b0 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.3.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T1.3 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x += undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = null; x += undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x += null; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x += null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x += undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = undefined; x += undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x += null; +if (x !== 0) { + $ERROR('#4: x = null; x += null; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.4.js new file mode 100644 index 0000000000..4bee990876 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T1.4.js @@ -0,0 +1,52 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T1.4 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x += "1"; +if (x !== "11") { + $ERROR('#1: x = "1"; x += "1"; x === "11". Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x += "1"; +if (x !== "11") { + $ERROR('#2: x = new String("1"); x += "1"; x === "11". Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x += new String("1"); +if (x !== "11") { + $ERROR('#3: x = "1"; x += new String("1"); x === "11". Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x += new String("1"); +if (x !== "11") { + $ERROR('#4: x = new String("1"); x += new String("1"); x === "11". Actual: ' + (x)); +} + +//CHECK#5 +if ("x" + "1" !=="x1") { + $ERROR('#5: x = "x"; x += "1"; x === "x1". Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x += "x"; +if (x !== "1x") { + $ERROR('#6: x = "1"; x += "x"; x === "1x". Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.1.js new file mode 100644 index 0000000000..31bfa4bc42 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x += 1; +if (x !== 2) { + $ERROR('#1: x = true; x += 1; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x += true; +if (x !== 2) { + $ERROR('#2: x = 1; x += true; x === 2. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x += 1; +if (x !== 2) { + $ERROR('#3: x = new Boolean(true); x += 1; x === 2. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x += new Boolean(true); +if (x !== 2) { + $ERROR('#4: x = 1; x += new Boolean(true); x === 2. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x += new Number(1); +if (x !== 2) { + $ERROR('#5: x = true; x += new Number(1); x === 2. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x += true; +if (x !== 2) { + $ERROR('#6: x = new Number(1); x += true; x === 2. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x += new Number(1); +if (x !== 2) { + $ERROR('#7: x = new Boolean(true); x += new Number(1); x === 2. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x += new Boolean(true); +if (x !== 2) { + $ERROR('#8: x = new Number(1); x += new Boolean(true); x === 2. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.2.js new file mode 100644 index 0000000000..e06f4f08a7 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.2.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x += null; +if (x !== 1) { + $ERROR('#1: x = 1; x += null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x += 1; +if (x !== 1) { + $ERROR('#2: x = null; x += 1; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x += null; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x += null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x += new Number(1); +if (x !== 1) { + $ERROR('#4: x = null; x += new Number(1); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.3.js new file mode 100644 index 0000000000..6a106e3824 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x += undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = 1; x += undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x += 1; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x += 1; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x += undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Number(1); x += undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x += new Number(1); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x += new Number(1); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.4.js new file mode 100644 index 0000000000..fa1e9586a2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x += undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = true; x += undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x += true; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x += true; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x += undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Boolean(true); x += undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x += new Boolean(true); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x += new Boolean(true); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.5.js new file mode 100644 index 0000000000..20944302d3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.5.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x += null; +if (x !== 1) { + $ERROR('#1: x = true; x += null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x += true; +if (x !== 1) { + $ERROR('#2: x = null; x += true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x += null; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x += null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x += new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = null; x += new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.6.js new file mode 100644 index 0000000000..ea9a9b2d5c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.6.js @@ -0,0 +1,82 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x += 1; +if (x !== "11") { + $ERROR('#1: x = "1"; x += 1; x === "11". Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x += "1"; +if (x !== "11") { + $ERROR('#2: x = 1; x += "1"; x === "11". Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x += 1; +if (x !== "11") { + $ERROR('#3: x = new String("1"); x += 1; x === "11". Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x += new String("1"); +if (x !== "11") { + $ERROR('#4: x = 1; x += new String("1"); x === "11". Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x += new Number(1); +if (x !== "11") { + $ERROR('#5: x = "1"; x += new Number(1); x === "11". Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x += "1"; +if (x !== "11") { + $ERROR('#6: x = new Number(1); x += "1"; x === "11". Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x += new Number(1); +if (x !== "11") { + $ERROR('#7: x = new String("1"); x += new Number(1); x === "11". Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x += new String("1"); +if (x !== "11") { + $ERROR('#8: x = new Number(1); x += new String("1"); x === "11". Actual: ' + (x)); +} + +//CHECK#9 +if ("x" + 1 !=="x1") { + $ERROR('#9: x = "x"; x += 1; x === "x1". Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x += "x"; +if (x !== "1x") { + $ERROR('#10: x = 1; x += "x"; x === "1x". Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.7.js new file mode 100644 index 0000000000..ebcfa0da94 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.7.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x += "1"; +if (x !== "true1") { + $ERROR('#1: x = true; x += "1"; x === "true1". Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x += true; +if (x !== "1true") { + $ERROR('#2: x = "1"; x += true; x === "1true". Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x += "1"; +if (x !== "true1") { + $ERROR('#3: x = new Boolean(true); x += "1"; x === "true1". Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x += new Boolean(true); +if (x !== "1true") { + $ERROR('#4: x = "1"; x += new Boolean(true); x === "1true". Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x += new String("1"); +if (x !== "true1") { + $ERROR('#5: x = true; x += new String("1"); x === "true1". Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x += true; +if (x !== "1true") { + $ERROR('#6: x = new String("1"); x += true; x === "1true". Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x += new String("1"); +if (x !== "true1") { + $ERROR('#7: x = new Boolean(true); x += new String("1"); x === "true1". Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x += new Boolean(true); +if (x !== "1true") { + $ERROR('#8: x = new String("1"); x += new Boolean(true); x === "1true". Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.8.js new file mode 100644 index 0000000000..366b568349 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x += undefined; +if (x !== "1undefined") { + $ERROR('#1: x = "1"; x += undefined; x === "1undefined". Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x += "1"; +if (x !== "undefined1") { + $ERROR('#2: x = undefined; x += "1"; x === "undefined1". Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x += undefined; +if (x !== "1undefined") { + $ERROR('#3: x = new String("1"); x += undefined; x === "1undefined". Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x += new String("1"); +if (x !== "undefined1") { + $ERROR('#4: x = undefined; x += new String("1"); x === "undefined1". Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.9.js new file mode 100644 index 0000000000..a999463b2c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.4_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x += y is the same as x = x + y +es5id: 11.13.2_A4.4_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x += null; +if (x !== "1null") { + $ERROR('#1: x = "1"; x += null; x === "1null". Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x += "1"; +if (x !== "null1") { + $ERROR('#2: x = null; x += "1"; x === "null1". Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x += null; +if (x !== "1null") { + $ERROR('#3: x = new String("1"); x += null; x === "1null". Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x += new String("1"); +if (x !== "null1") { + $ERROR('#4: x = null; x += new String("1"); x === "null1". Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.1.js new file mode 100644 index 0000000000..83671bec99 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x -= true; +if (x !== 0) { + $ERROR('#1: x = true; x -= true; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x -= true; +if (x !== 0) { + $ERROR('#2: x = new Boolean(true); x -= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x -= new Boolean(true); +if (x !== 0) { + $ERROR('#3: x = true; x -= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x -= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = new Boolean(true); x -= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.2.js new file mode 100644 index 0000000000..85605703cb --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x -= 1; +if (x !== 0) { + $ERROR('#1: x = 1; x -= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x -= 1; +if (x !== 0) { + $ERROR('#2: x = new Number(1); x -= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x -= new Number(1); +if (x !== 0) { + $ERROR('#3: x = 1; x -= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x -= new Number(1); +if (x !== 0) { + $ERROR('#4: x = new Number(1); x -= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.3.js new file mode 100644 index 0000000000..3af53c55b7 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.3.js @@ -0,0 +1,54 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T1.3 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x -= "1"; +if (x !== 0) { + $ERROR('#1: x = "1"; x -= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x -= "1"; +if (x !== 0) { + $ERROR('#2: x = new String("1"); x -= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x -= new String("1"); +if (x !== 0) { + $ERROR('#3: x = "1"; x -= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x -= new String("1"); +if (x !== 0) { + $ERROR('#4: x = new String("1"); x -= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = "x"; +x -= "1"; +if (isNaN(x) !== true) { + $ERROR('#5: x = "x"; x -= "1"; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x -= "x"; +if (isNaN(x) !== true) { + $ERROR('#6: x = "1"; x -= "x"; x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.4.js new file mode 100644 index 0000000000..8e9d209bfa --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T1.4.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T1.4 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x -= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = null; x -= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x -= null; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x -= null; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x -= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = undefined; x -= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x -= null; +if (x !== 0) { + $ERROR('#4: x = null; x -= null; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.1.js new file mode 100644 index 0000000000..7819300ccf --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x -= 1; +if (x !== 0) { + $ERROR('#1: x = true; x -= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x -= true; +if (x !== 0) { + $ERROR('#2: x = 1; x -= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x -= 1; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x -= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x -= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = 1; x -= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x -= new Number(1); +if (x !== 0) { + $ERROR('#5: x = true; x -= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x -= true; +if (x !== 0) { + $ERROR('#6: x = new Number(1); x -= true; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x -= new Number(1); +if (x !== 0) { + $ERROR('#7: x = new Boolean(true); x -= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x -= new Boolean(true); +if (x !== 0) { + $ERROR('#8: x = new Number(1); x -= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.2.js new file mode 100644 index 0000000000..9ff20e6d61 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.2.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x -= 1; +if (x !== 0) { + $ERROR('#1: x = "1"; x -= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x -= "1"; +if (x !== 0) { + $ERROR('#2: x = 1; x -= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x -= 1; +if (x !== 0) { + $ERROR('#3: x = new String("1"); x -= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x -= new String("1"); +if (x !== 0) { + $ERROR('#4: x = 1; x -= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x -= new Number(1); +if (x !== 0) { + $ERROR('#5: x = "1"; x -= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x -= "1"; +if (x !== 0) { + $ERROR('#6: x = new Number(1); x -= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x -= new Number(1); +if (x !== 0) { + $ERROR('#7: x = new String("1"); x -= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x -= new String("1"); +if (x !== 0) { + $ERROR('#8: x = new Number(1); x -= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#9 +x = "x"; +x -= 1; +if (isNaN(x) !== true) { + $ERROR('#9: x = "x"; x -= 1; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x -= "x"; +if (isNaN(x) !== true) { + $ERROR('#10: x = 1; x -= "x"; x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.3.js new file mode 100644 index 0000000000..ff99eefc6a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x -= null; +if (x !== 1) { + $ERROR('#1: x = 1; x -= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x -= 1; +if (x !== -1) { + $ERROR('#2: x = null; x -= 1; x === -1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x -= null; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x -= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x -= new Number(1); +if (x !== -1) { + $ERROR('#4: x = null; x -= new Number(1); x === -1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.4.js new file mode 100644 index 0000000000..9bfa9e015a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x -= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = 1; x -= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x -= 1; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x -= 1; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x -= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Number(1); x -= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x -= new Number(1); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x -= new Number(1); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.5.js new file mode 100644 index 0000000000..d31fc22b5a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.5.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x -= "1"; +if (x !== 0) { + $ERROR('#1: x = true; x -= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x -= true; +if (x !== 0) { + $ERROR('#2: x = "1"; x -= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x -= "1"; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x -= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x -= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = "1"; x -= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x -= new String("1"); +if (x !== 0) { + $ERROR('#5: x = true; x -= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x -= true; +if (x !== 0) { + $ERROR('#6: x = new String("1"); x -= true; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x -= new String("1"); +if (x !== 0) { + $ERROR('#7: x = new Boolean(true); x -= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x -= new Boolean(true); +if (x !== 0) { + $ERROR('#8: x = new String("1"); x -= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.6.js new file mode 100644 index 0000000000..cd707f9892 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x -= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = "1"; x -= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x -= "1"; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x -= "1"; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x -= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new String("1"); x -= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x -= new String("1"); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x -= new String("1"); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.7.js new file mode 100644 index 0000000000..01833b0a5b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x -= null; +if (x !== 1) { + $ERROR('#1: x = "1"; x -= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x -= "1"; +if (x !== -1) { + $ERROR('#2: x = null; x -= "1"; x === -1. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x -= null; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x -= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x -= new String("1"); +if (x !== -1) { + $ERROR('#4: x = null; x -= new String("1"); x === -1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.8.js new file mode 100644 index 0000000000..62042d834a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x -= undefined; +if (isNaN(x) !== true) { + $ERROR('#1: x = true; x -= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x -= true; +if (isNaN(x) !== true) { + $ERROR('#2: x = undefined; x -= true; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x -= undefined; +if (isNaN(x) !== true) { + $ERROR('#3: x = new Boolean(true); x -= undefined; x === Not-a-Number. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x -= new Boolean(true); +if (isNaN(x) !== true) { + $ERROR('#4: x = undefined; x -= new Boolean(true); x === Not-a-Number. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.9.js new file mode 100644 index 0000000000..51e5a6dcea --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.5_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x -= y is the same as x = x - y +es5id: 11.13.2_A4.5_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x -= null; +if (x !== 1) { + $ERROR('#1: x = true; x -= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x -= true; +if (x !== -1) { + $ERROR('#2: x = null; x -= true; x === -1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x -= null; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x -= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x -= new Boolean(true); +if (x !== -1) { + $ERROR('#4: x = null; x -= new Boolean(true); x === -1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.1.js new file mode 100644 index 0000000000..75b7939a75 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x <<= true; +if (x !== 2) { + $ERROR('#1: x = true; x <<= true; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x <<= true; +if (x !== 2) { + $ERROR('#2: x = new Boolean(true); x <<= true; x === 2. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x <<= new Boolean(true); +if (x !== 2) { + $ERROR('#3: x = true; x <<= new Boolean(true); x === 2. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x <<= new Boolean(true); +if (x !== 2) { + $ERROR('#4: x = new Boolean(true); x <<= new Boolean(true); x === 2. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.2.js new file mode 100644 index 0000000000..8eef7a1c65 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x <<= 1; +if (x !== 2) { + $ERROR('#1: x = 1; x <<= 1; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x <<= 1; +if (x !== 2) { + $ERROR('#2: x = new Number(1); x <<= 1; x === 2. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x <<= new Number(1); +if (x !== 2) { + $ERROR('#3: x = 1; x <<= new Number(1); x === 2. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x <<= new Number(1); +if (x !== 2) { + $ERROR('#4: x = new Number(1); x <<= new Number(1); x === 2. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.3.js new file mode 100644 index 0000000000..57465acdd5 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.3.js @@ -0,0 +1,54 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T1.3 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x <<= "1"; +if (x !== 2) { + $ERROR('#1: x = "1"; x <<= "1"; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x <<= "1"; +if (x !== 2) { + $ERROR('#2: x = new String("1"); x <<= "1"; x === 2. Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x <<= new String("1"); +if (x !== 2) { + $ERROR('#3: x = "1"; x <<= new String("1"); x === 2. Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x <<= new String("1"); +if (x !== 2) { + $ERROR('#4: x = new String("1"); x <<= new String("1"); x === 2. Actual: ' + (x)); +} + +//CHECK#5 +x = "x"; +x <<= "1"; +if (x !== 0) { + $ERROR('#5: x = "x"; x <<= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x <<= "x"; +if (x !== 1) { + $ERROR('#6: x = "1"; x <<= "x"; x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.4.js new file mode 100644 index 0000000000..1430fc2119 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T1.4.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T1.4 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x <<= undefined; +if (x !== 0) { + $ERROR('#1: x = null; x <<= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x <<= null; +if (x !== 0) { + $ERROR('#2: x = undefined; x <<= null; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x <<= undefined; +if (x !== 0) { + $ERROR('#3: x = undefined; x <<= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x <<= null; +if (x !== 0) { + $ERROR('#4: x = null; x <<= null; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.1.js new file mode 100644 index 0000000000..4a9c6442a4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x <<= 1; +if (x !== 2) { + $ERROR('#1: x = true; x <<= 1; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x <<= true; +if (x !== 2) { + $ERROR('#2: x = 1; x <<= true; x === 2. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x <<= 1; +if (x !== 2) { + $ERROR('#3: x = new Boolean(true); x <<= 1; x === 2. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x <<= new Boolean(true); +if (x !== 2) { + $ERROR('#4: x = 1; x <<= new Boolean(true); x === 2. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x <<= new Number(1); +if (x !== 2) { + $ERROR('#5: x = true; x <<= new Number(1); x === 2. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x <<= true; +if (x !== 2) { + $ERROR('#6: x = new Number(1); x <<= true; x === 2. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x <<= new Number(1); +if (x !== 2) { + $ERROR('#7: x = new Boolean(true); x <<= new Number(1); x === 2. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x <<= new Boolean(true); +if (x !== 2) { + $ERROR('#8: x = new Number(1); x <<= new Boolean(true); x === 2. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.2.js new file mode 100644 index 0000000000..fa70cc7e6e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.2.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x <<= 1; +if (x !== 2) { + $ERROR('#1: x = "1"; x <<= 1; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x <<= "1"; +if (x !== 2) { + $ERROR('#2: x = 1; x <<= "1"; x === 2. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x <<= 1; +if (x !== 2) { + $ERROR('#3: x = new String("1"); x <<= 1; x === 2. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x <<= new String("1"); +if (x !== 2) { + $ERROR('#4: x = 1; x <<= new String("1"); x === 2. Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x <<= new Number(1); +if (x !== 2) { + $ERROR('#5: x = "1"; x <<= new Number(1); x === 2. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x <<= "1"; +if (x !== 2) { + $ERROR('#6: x = new Number(1); x <<= "1"; x === 2. Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x <<= new Number(1); +if (x !== 2) { + $ERROR('#7: x = new String("1"); x <<= new Number(1); x === 2. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x <<= new String("1"); +if (x !== 2) { + $ERROR('#8: x = new Number(1); x <<= new String("1"); x === 2. Actual: ' + (x)); +} + +//CHECK#9 +x = "x"; +x <<= 1; +if (x !== 0) { + $ERROR('#9: x = "x"; x <<= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x <<= "x"; +if (x !== 1) { + $ERROR('#10: x = 1; x <<= "x"; x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.3.js new file mode 100644 index 0000000000..64b5ec1e03 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x <<= null; +if (x !== 1) { + $ERROR('#1: x = 1; x <<= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x <<= 1; +if (x !== 0) { + $ERROR('#2: x = null; x <<= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x <<= null; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x <<= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x <<= new Number(1); +if (x !== 0) { + $ERROR('#4: x = null; x <<= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.4.js new file mode 100644 index 0000000000..b69cfd3a8a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x <<= undefined; +if (x !== 1) { + $ERROR('#1: x = 1; x <<= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x <<= 1; +if (x !== 0) { + $ERROR('#2: x = undefined; x <<= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x <<= undefined; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x <<= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x <<= new Number(1); +if (x !== 0) { + $ERROR('#4: x = undefined; x <<= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.5.js new file mode 100644 index 0000000000..5f614bca32 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.5.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x <<= "1"; +if (x !== 2) { + $ERROR('#1: x = true; x <<= "1"; x === 2. Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x <<= true; +if (x !== 2) { + $ERROR('#2: x = "1"; x <<= true; x === 2. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x <<= "1"; +if (x !== 2) { + $ERROR('#3: x = new Boolean(true); x <<= "1"; x === 2. Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x <<= new Boolean(true); +if (x !== 2) { + $ERROR('#4: x = "1"; x <<= new Boolean(true); x === 2. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x <<= new String("1"); +if (x !== 2) { + $ERROR('#5: x = true; x <<= new String("1"); x === 2. Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x <<= true; +if (x !== 2) { + $ERROR('#6: x = new String("1"); x <<= true; x === 2. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x <<= new String("1"); +if (x !== 2) { + $ERROR('#7: x = new Boolean(true); x <<= new String("1"); x === 2. Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x <<= new Boolean(true); +if (x !== 2) { + $ERROR('#8: x = new String("1"); x <<= new Boolean(true); x === 2. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.6.js new file mode 100644 index 0000000000..748acdfd5f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x <<= undefined; +if (x !== 1) { + $ERROR('#1: x = "1"; x <<= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x <<= "1"; +if (x !== 0) { + $ERROR('#2: x = undefined; x <<= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x <<= undefined; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x <<= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x <<= new String("1"); +if (x !== 0) { + $ERROR('#4: x = undefined; x <<= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.7.js new file mode 100644 index 0000000000..9e468fbc00 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x <<= null; +if (x !== 1) { + $ERROR('#1: x = "1"; x <<= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x <<= "1"; +if (x !== 0) { + $ERROR('#2: x = null; x <<= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x <<= null; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x <<= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x <<= new String("1"); +if (x !== 0) { + $ERROR('#4: x = null; x <<= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.8.js new file mode 100644 index 0000000000..441ef0334f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x <<= undefined; +if (x !== 1) { + $ERROR('#1: x = true; x <<= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x <<= true; +if (x !== 0) { + $ERROR('#2: x = undefined; x <<= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x <<= undefined; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x <<= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x <<= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = undefined; x <<= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.9.js new file mode 100644 index 0000000000..7ae3d1c224 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.6_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x <<= y is the same as x = x << y +es5id: 11.13.2_A4.6_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x <<= null; +if (x !== 1) { + $ERROR('#1: x = true; x <<= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x <<= true; +if (x !== 0) { + $ERROR('#2: x = null; x <<= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x <<= null; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x <<= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x <<= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = null; x <<= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.1.js new file mode 100644 index 0000000000..ccc10a46fd --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x >>= true; +if (x !== 0) { + $ERROR('#1: x = true; x >>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x >>= true; +if (x !== 0) { + $ERROR('#2: x = new Boolean(true); x >>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x >>= new Boolean(true); +if (x !== 0) { + $ERROR('#3: x = true; x >>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x >>= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = new Boolean(true); x >>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.2.js new file mode 100644 index 0000000000..69b85bcc86 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x >>= 1; +if (x !== 0) { + $ERROR('#1: x = 1; x >>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x >>= 1; +if (x !== 0) { + $ERROR('#2: x = new Number(1); x >>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x >>= new Number(1); +if (x !== 0) { + $ERROR('#3: x = 1; x >>= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x >>= new Number(1); +if (x !== 0) { + $ERROR('#4: x = new Number(1); x >>= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.3.js new file mode 100644 index 0000000000..bd3d1a8c94 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.3.js @@ -0,0 +1,54 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T1.3 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x >>= "1"; +if (x !== 0) { + $ERROR('#1: x = "1"; x >>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x >>= "1"; +if (x !== 0) { + $ERROR('#2: x = new String("1"); x >>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x >>= new String("1"); +if (x !== 0) { + $ERROR('#3: x = "1"; x >>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x >>= new String("1"); +if (x !== 0) { + $ERROR('#4: x = new String("1"); x >>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = "x"; +x >>= "1"; +if (x !== 0) { + $ERROR('#5: x = "x"; x >>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x >>= "x"; +if (x !== 1) { + $ERROR('#6: x = "1"; x >>= "x"; x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.4.js new file mode 100644 index 0000000000..ebc7029f98 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T1.4.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T1.4 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x >>= undefined; +if (x !== 0) { + $ERROR('#1: x = null; x >>= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x >>= null; +if (x !== 0) { + $ERROR('#2: x = undefined; x >>= null; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x >>= undefined; +if (x !== 0) { + $ERROR('#3: x = undefined; x >>= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x >>= null; +if (x !== 0) { + $ERROR('#4: x = null; x >>= null; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.1.js new file mode 100644 index 0000000000..f0514a81e9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x >>= 1; +if (x !== 0) { + $ERROR('#1: x = true; x >>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x >>= true; +if (x !== 0) { + $ERROR('#2: x = 1; x >>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x >>= 1; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x >>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x >>= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = 1; x >>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x >>= new Number(1); +if (x !== 0) { + $ERROR('#5: x = true; x >>= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x >>= true; +if (x !== 0) { + $ERROR('#6: x = new Number(1); x >>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x >>= new Number(1); +if (x !== 0) { + $ERROR('#7: x = new Boolean(true); x >>= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x >>= new Boolean(true); +if (x !== 0) { + $ERROR('#8: x = new Number(1); x >>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.2.js new file mode 100644 index 0000000000..c02f24cc62 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.2.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x >>= 1; +if (x !== 0) { + $ERROR('#1: x = "1"; x >>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x >>= "1"; +if (x !== 0) { + $ERROR('#2: x = 1; x >>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x >>= 1; +if (x !== 0) { + $ERROR('#3: x = new String("1"); x >>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x >>= new String("1"); +if (x !== 0) { + $ERROR('#4: x = 1; x >>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x >>= new Number(1); +if (x !== 0) { + $ERROR('#5: x = "1"; x >>= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x >>= "1"; +if (x !== 0) { + $ERROR('#6: x = new Number(1); x >>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x >>= new Number(1); +if (x !== 0) { + $ERROR('#7: x = new String("1"); x >>= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x >>= new String("1"); +if (x !== 0) { + $ERROR('#8: x = new Number(1); x >>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#9 +x = "x"; +x >>= 1; +if (x !== 0) { + $ERROR('#9: x = "x"; x >>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x >>= "x"; +if (x !== 1) { + $ERROR('#10: x = 1; x >>= "x"; x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.3.js new file mode 100644 index 0000000000..292b3fd5e7 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x >>= null; +if (x !== 1) { + $ERROR('#1: x = 1; x >>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x >>= 1; +if (x !== 0) { + $ERROR('#2: x = null; x >>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x >>= null; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x >>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x >>= new Number(1); +if (x !== 0) { + $ERROR('#4: x = null; x >>= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.4.js new file mode 100644 index 0000000000..7a2867585c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x >>= undefined; +if (x !== 1) { + $ERROR('#1: x = 1; x >>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x >>= 1; +if (x !== 0) { + $ERROR('#2: x = undefined; x >>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x >>= undefined; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x >>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x >>= new Number(1); +if (x !== 0) { + $ERROR('#4: x = undefined; x >>= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.5.js new file mode 100644 index 0000000000..37d172f4b3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.5.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x >>= "1"; +if (x !== 0) { + $ERROR('#1: x = true; x >>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x >>= true; +if (x !== 0) { + $ERROR('#2: x = "1"; x >>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x >>= "1"; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x >>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x >>= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = "1"; x >>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x >>= new String("1"); +if (x !== 0) { + $ERROR('#5: x = true; x >>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x >>= true; +if (x !== 0) { + $ERROR('#6: x = new String("1"); x >>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x >>= new String("1"); +if (x !== 0) { + $ERROR('#7: x = new Boolean(true); x >>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x >>= new Boolean(true); +if (x !== 0) { + $ERROR('#8: x = new String("1"); x >>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.6.js new file mode 100644 index 0000000000..2c6a0a8eca --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x >>= undefined; +if (x !== 1) { + $ERROR('#1: x = "1"; x >>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x >>= "1"; +if (x !== 0) { + $ERROR('#2: x = undefined; x >>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x >>= undefined; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x >>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x >>= new String("1"); +if (x !== 0) { + $ERROR('#4: x = undefined; x >>= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.7.js new file mode 100644 index 0000000000..5f341b44ad --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x >>= null; +if (x !== 1) { + $ERROR('#1: x = "1"; x >>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x >>= "1"; +if (x !== 0) { + $ERROR('#2: x = null; x >>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x >>= null; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x >>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x >>= new String("1"); +if (x !== 0) { + $ERROR('#4: x = null; x >>= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.8.js new file mode 100644 index 0000000000..0a80637ece --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x >>= undefined; +if (x !== 1) { + $ERROR('#1: x = true; x >>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x >>= true; +if (x !== 0) { + $ERROR('#2: x = undefined; x >>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x >>= undefined; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x >>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x >>= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = undefined; x >>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.9.js new file mode 100644 index 0000000000..1e11295fae --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.7_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>= y is the same as x = x >> y +es5id: 11.13.2_A4.7_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x >>= null; +if (x !== 1) { + $ERROR('#1: x = true; x >>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x >>= true; +if (x !== 0) { + $ERROR('#2: x = null; x >>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x >>= null; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x >>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x >>= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = null; x >>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.1.js new file mode 100644 index 0000000000..2f0138e762 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x >>>= true; +if (x !== 0) { + $ERROR('#1: x = true; x >>>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x >>>= true; +if (x !== 0) { + $ERROR('#2: x = new Boolean(true); x >>>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x >>>= new Boolean(true); +if (x !== 0) { + $ERROR('#3: x = true; x >>>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x >>>= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = new Boolean(true); x >>>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.2.js new file mode 100644 index 0000000000..da87371bac --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x >>>= 1; +if (x !== 0) { + $ERROR('#1: x = 1; x >>>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x >>>= 1; +if (x !== 0) { + $ERROR('#2: x = new Number(1); x >>>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x >>>= new Number(1); +if (x !== 0) { + $ERROR('#3: x = 1; x >>>= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x >>>= new Number(1); +if (x !== 0) { + $ERROR('#4: x = new Number(1); x >>>= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.3.js new file mode 100644 index 0000000000..56e6aaf0a6 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.3.js @@ -0,0 +1,54 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T1.3 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x >>>= "1"; +if (x !== 0) { + $ERROR('#1: x = "1"; x >>>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x >>>= "1"; +if (x !== 0) { + $ERROR('#2: x = new String("1"); x >>>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x >>>= new String("1"); +if (x !== 0) { + $ERROR('#3: x = "1"; x >>>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x >>>= new String("1"); +if (x !== 0) { + $ERROR('#4: x = new String("1"); x >>>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = "x"; +x >>>= "1"; +if (x !== 0) { + $ERROR('#5: x = "x"; x >>>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x >>>= "x"; +if (x !== 1) { + $ERROR('#6: x = "1"; x >>>= "x"; x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.4.js new file mode 100644 index 0000000000..2c079f6d5d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T1.4.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T1.4 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x >>>= undefined; +if (x !== 0) { + $ERROR('#1: x = null; x >>>= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x >>>= null; +if (x !== 0) { + $ERROR('#2: x = undefined; x >>>= null; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x >>>= undefined; +if (x !== 0) { + $ERROR('#3: x = undefined; x >>>= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x >>>= null; +if (x !== 0) { + $ERROR('#4: x = null; x >>>= null; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.1.js new file mode 100644 index 0000000000..ed0eb5b8ab --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x >>>= 1; +if (x !== 0) { + $ERROR('#1: x = true; x >>>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x >>>= true; +if (x !== 0) { + $ERROR('#2: x = 1; x >>>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x >>>= 1; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x >>>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x >>>= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = 1; x >>>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x >>>= new Number(1); +if (x !== 0) { + $ERROR('#5: x = true; x >>>= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x >>>= true; +if (x !== 0) { + $ERROR('#6: x = new Number(1); x >>>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x >>>= new Number(1); +if (x !== 0) { + $ERROR('#7: x = new Boolean(true); x >>>= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x >>>= new Boolean(true); +if (x !== 0) { + $ERROR('#8: x = new Number(1); x >>>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.2.js new file mode 100644 index 0000000000..653259cfd3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.2.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x >>>= 1; +if (x !== 0) { + $ERROR('#1: x = "1"; x >>>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x >>>= "1"; +if (x !== 0) { + $ERROR('#2: x = 1; x >>>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x >>>= 1; +if (x !== 0) { + $ERROR('#3: x = new String("1"); x >>>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x >>>= new String("1"); +if (x !== 0) { + $ERROR('#4: x = 1; x >>>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x >>>= new Number(1); +if (x !== 0) { + $ERROR('#5: x = "1"; x >>>= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x >>>= "1"; +if (x !== 0) { + $ERROR('#6: x = new Number(1); x >>>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x >>>= new Number(1); +if (x !== 0) { + $ERROR('#7: x = new String("1"); x >>>= new Number(1); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x >>>= new String("1"); +if (x !== 0) { + $ERROR('#8: x = new Number(1); x >>>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#9 +x = "x"; +x >>>= 1; +if (x !== 0) { + $ERROR('#9: x = "x"; x >>>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x >>>= "x"; +if (x !== 1) { + $ERROR('#10: x = 1; x >>>= "x"; x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.3.js new file mode 100644 index 0000000000..1e8c0b6b77 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x >>>= null; +if (x !== 1) { + $ERROR('#1: x = 1; x >>>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x >>>= 1; +if (x !== 0) { + $ERROR('#2: x = null; x >>>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x >>>= null; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x >>>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x >>>= new Number(1); +if (x !== 0) { + $ERROR('#4: x = null; x >>>= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.4.js new file mode 100644 index 0000000000..81183e1e84 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x >>>= undefined; +if (x !== 1) { + $ERROR('#1: x = 1; x >>>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x >>>= 1; +if (x !== 0) { + $ERROR('#2: x = undefined; x >>>= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x >>>= undefined; +if (x !== 1) { + $ERROR('#3: x = new Number(1); x >>>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x >>>= new Number(1); +if (x !== 0) { + $ERROR('#4: x = undefined; x >>>= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.5.js new file mode 100644 index 0000000000..5466020b3b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.5.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x >>>= "1"; +if (x !== 0) { + $ERROR('#1: x = true; x >>>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x >>>= true; +if (x !== 0) { + $ERROR('#2: x = "1"; x >>>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x >>>= "1"; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x >>>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x >>>= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = "1"; x >>>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x >>>= new String("1"); +if (x !== 0) { + $ERROR('#5: x = true; x >>>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x >>>= true; +if (x !== 0) { + $ERROR('#6: x = new String("1"); x >>>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x >>>= new String("1"); +if (x !== 0) { + $ERROR('#7: x = new Boolean(true); x >>>= new String("1"); x === 0. Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x >>>= new Boolean(true); +if (x !== 0) { + $ERROR('#8: x = new String("1"); x >>>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.6.js new file mode 100644 index 0000000000..4dd2b0e9a1 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x >>>= undefined; +if (x !== 1) { + $ERROR('#1: x = "1"; x >>>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x >>>= "1"; +if (x !== 0) { + $ERROR('#2: x = undefined; x >>>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x >>>= undefined; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x >>>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x >>>= new String("1"); +if (x !== 0) { + $ERROR('#4: x = undefined; x >>>= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.7.js new file mode 100644 index 0000000000..f4263a120c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x >>>= null; +if (x !== 1) { + $ERROR('#1: x = "1"; x >>>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x >>>= "1"; +if (x !== 0) { + $ERROR('#2: x = null; x >>>= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x >>>= null; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x >>>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x >>>= new String("1"); +if (x !== 0) { + $ERROR('#4: x = null; x >>>= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.8.js new file mode 100644 index 0000000000..eb798329e1 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x >>>= undefined; +if (x !== 1) { + $ERROR('#1: x = true; x >>>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x >>>= true; +if (x !== 0) { + $ERROR('#2: x = undefined; x >>>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x >>>= undefined; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x >>>= undefined; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x >>>= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = undefined; x >>>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.9.js new file mode 100644 index 0000000000..2edcd8ddb1 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.8_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x >>>= y is the same as x = x >>> y +es5id: 11.13.2_A4.8_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x >>>= null; +if (x !== 1) { + $ERROR('#1: x = true; x >>>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x >>>= true; +if (x !== 0) { + $ERROR('#2: x = null; x >>>= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x >>>= null; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x >>>= null; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x >>>= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = null; x >>>= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.1.js new file mode 100644 index 0000000000..0f8ae0ad67 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T1.1 +description: > + Type(x) and Type(y) vary between primitive boolean and Boolean + object +---*/ + +var x; + +//CHECK#1 +x = true; +x &= true; +if (x !== 1) { + $ERROR('#1: x = true; x &= true; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new Boolean(true); +x &= true; +if (x !== 1) { + $ERROR('#2: x = new Boolean(true); x &= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = true; +x &= new Boolean(true); +if (x !== 1) { + $ERROR('#3: x = true; x &= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new Boolean(true); +x &= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = new Boolean(true); x &= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.2.js new file mode 100644 index 0000000000..d0f07d6faf --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.2.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T1.2 +description: Type(x) and Type(y) vary between primitive number and Number object +---*/ + +var x; + +//CHECK#1 +x = 1; +x &= 1; +if (x !== 1) { + $ERROR('#1: x = 1; x &= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new Number(1); +x &= 1; +if (x !== 1) { + $ERROR('#2: x = new Number(1); x &= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = 1; +x &= new Number(1); +if (x !== 1) { + $ERROR('#3: x = 1; x &= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new Number(1); +x &= new Number(1); +if (x !== 1) { + $ERROR('#4: x = new Number(1); x &= new Number(1); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.3.js new file mode 100644 index 0000000000..2a113a01e9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.3.js @@ -0,0 +1,54 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T1.3 +description: Type(x) and Type(y) vary between primitive string and String object +---*/ + +var x; + +//CHECK#1 +x = "1"; +x &= "1"; +if (x !== 1) { + $ERROR('#1: x = "1"; x &= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = new String("1"); +x &= "1"; +if (x !== 1) { + $ERROR('#2: x = new String("1"); x &= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = "1"; +x &= new String("1"); +if (x !== 1) { + $ERROR('#3: x = "1"; x &= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = new String("1"); +x &= new String("1"); +if (x !== 1) { + $ERROR('#4: x = new String("1"); x &= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = "x"; +x &= "1"; +if (x !== 0) { + $ERROR('#5: x = "x"; x &= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#6 +x = "1"; +x &= "x"; +if (x !== 0) { + $ERROR('#6: x = "1"; x &= "x"; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.4.js new file mode 100644 index 0000000000..13d71255ae --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T1.4.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T1.4 +description: Type(x) and Type(y) vary between Null and Undefined +---*/ + +var x; + +//CHECK#1 +x = null; +x &= undefined; +if (x !== 0) { + $ERROR('#1: x = null; x &= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x &= null; +if (x !== 0) { + $ERROR('#2: x = undefined; x &= null; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = undefined; +x &= undefined; +if (x !== 0) { + $ERROR('#3: x = undefined; x &= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x &= null; +if (x !== 0) { + $ERROR('#4: x = null; x &= null; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.1.js new file mode 100644 index 0000000000..4ab204cac8 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.1.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T2.1 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x &= 1; +if (x !== 1) { + $ERROR('#1: x = true; x &= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x &= true; +if (x !== 1) { + $ERROR('#2: x = 1; x &= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x &= 1; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x &= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x &= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = 1; x &= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x &= new Number(1); +if (x !== 1) { + $ERROR('#5: x = true; x &= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x &= true; +if (x !== 1) { + $ERROR('#6: x = new Number(1); x &= true; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x &= new Number(1); +if (x !== 1) { + $ERROR('#7: x = new Boolean(true); x &= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x &= new Boolean(true); +if (x !== 1) { + $ERROR('#8: x = new Number(1); x &= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.2.js new file mode 100644 index 0000000000..f6ea5de068 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.2.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T2.2 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and String (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = "1"; +x &= 1; +if (x !== 1) { + $ERROR('#1: x = "1"; x &= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = 1; +x &= "1"; +if (x !== 1) { + $ERROR('#2: x = 1; x &= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x &= 1; +if (x !== 1) { + $ERROR('#3: x = new String("1"); x &= 1; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = 1; +x &= new String("1"); +if (x !== 1) { + $ERROR('#4: x = 1; x &= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = "1"; +x &= new Number(1); +if (x !== 1) { + $ERROR('#5: x = "1"; x &= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new Number(1); +x &= "1"; +if (x !== 1) { + $ERROR('#6: x = new Number(1); x &= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new String("1"); +x &= new Number(1); +if (x !== 1) { + $ERROR('#7: x = new String("1"); x &= new Number(1); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new Number(1); +x &= new String("1"); +if (x !== 1) { + $ERROR('#8: x = new Number(1); x &= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#9 +x = "x"; +x &= 1; +if (x !== 0) { + $ERROR('#9: x = "x"; x &= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#10 +x = 1; +x &= "x"; +if (x !== 0) { + $ERROR('#10: x = 1; x &= "x"; x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.3.js new file mode 100644 index 0000000000..d14cfdb0e4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T2.3 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = 1; +x &= null; +if (x !== 0) { + $ERROR('#1: x = 1; x &= null; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x &= 1; +if (x !== 0) { + $ERROR('#2: x = null; x &= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x &= null; +if (x !== 0) { + $ERROR('#3: x = new Number(1); x &= null; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x &= new Number(1); +if (x !== 0) { + $ERROR('#4: x = null; x &= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.4.js new file mode 100644 index 0000000000..6c143647a7 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T2.4 +description: > + Type(x) is different from Type(y) and both types vary between + Number (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = 1; +x &= undefined; +if (x !== 0) { + $ERROR('#1: x = 1; x &= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x &= 1; +if (x !== 0) { + $ERROR('#2: x = undefined; x &= 1; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Number(1); +x &= undefined; +if (x !== 0) { + $ERROR('#3: x = new Number(1); x &= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x &= new Number(1); +if (x !== 0) { + $ERROR('#4: x = undefined; x &= new Number(1); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.5.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.5.js new file mode 100644 index 0000000000..c10293c185 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.5.js @@ -0,0 +1,70 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T2.5 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Boolean (primitive and object) +---*/ + +var x; + +//CHECK#1 +x = true; +x &= "1"; +if (x !== 1) { + $ERROR('#1: x = true; x &= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#2 +x = "1"; +x &= true; +if (x !== 1) { + $ERROR('#2: x = "1"; x &= true; x === 1. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x &= "1"; +if (x !== 1) { + $ERROR('#3: x = new Boolean(true); x &= "1"; x === 1. Actual: ' + (x)); +} + +//CHECK#4 +x = "1"; +x &= new Boolean(true); +if (x !== 1) { + $ERROR('#4: x = "1"; x &= new Boolean(true); x === 1. Actual: ' + (x)); +} + +//CHECK#5 +x = true; +x &= new String("1"); +if (x !== 1) { + $ERROR('#5: x = true; x &= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#6 +x = new String("1"); +x &= true; +if (x !== 1) { + $ERROR('#6: x = new String("1"); x &= true; x === 1. Actual: ' + (x)); +} + +//CHECK#7 +x = new Boolean(true); +x &= new String("1"); +if (x !== 1) { + $ERROR('#7: x = new Boolean(true); x &= new String("1"); x === 1. Actual: ' + (x)); +} + +//CHECK#8 +x = new String("1"); +x &= new Boolean(true); +if (x !== 1) { + $ERROR('#8: x = new String("1"); x &= new Boolean(true); x === 1. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.6.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.6.js new file mode 100644 index 0000000000..88cdc39d5b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T2.6 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = "1"; +x &= undefined; +if (x !== 0) { + $ERROR('#1: x = "1"; x &= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x &= "1"; +if (x !== 0) { + $ERROR('#2: x = undefined; x &= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x &= undefined; +if (x !== 0) { + $ERROR('#3: x = new String("1"); x &= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x &= new String("1"); +if (x !== 0) { + $ERROR('#4: x = undefined; x &= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.7.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.7.js new file mode 100644 index 0000000000..1185825509 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T2.7 +description: > + Type(x) is different from Type(y) and both types vary between + String (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = "1"; +x &= null; +if (x !== 0) { + $ERROR('#1: x = "1"; x &= null; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x &= "1"; +if (x !== 0) { + $ERROR('#2: x = null; x &= "1"; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new String("1"); +x &= null; +if (x !== 0) { + $ERROR('#3: x = new String("1"); x &= null; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x &= new String("1"); +if (x !== 0) { + $ERROR('#4: x = null; x &= new String("1"); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.8.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.8.js new file mode 100644 index 0000000000..54802a9b5c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.8.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T2.8 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Undefined +---*/ + +var x; + +//CHECK#1 +x = true; +x &= undefined; +if (x !== 0) { + $ERROR('#1: x = true; x &= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = undefined; +x &= true; +if (x !== 0) { + $ERROR('#2: x = undefined; x &= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x &= undefined; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x &= undefined; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = undefined; +x &= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = undefined; x &= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.9.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.9.js new file mode 100644 index 0000000000..92cc2329e2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A4.9_T2.9.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The production x &= y is the same as x = x & y +es5id: 11.13.2_A4.9_T2.9 +description: > + Type(x) is different from Type(y) and both types vary between + Boolean (primitive or object) and Null +---*/ + +var x; + +//CHECK#1 +x = true; +x &= null; +if (x !== 0) { + $ERROR('#1: x = true; x &= null; x === 0. Actual: ' + (x)); +} + +//CHECK#2 +x = null; +x &= true; +if (x !== 0) { + $ERROR('#2: x = null; x &= true; x === 0. Actual: ' + (x)); +} + +//CHECK#3 +x = new Boolean(true); +x &= null; +if (x !== 0) { + $ERROR('#3: x = new Boolean(true); x &= null; x === 0. Actual: ' + (x)); +} + +//CHECK#4 +x = null; +x &= new Boolean(true); +if (x !== 0) { + $ERROR('#4: x = null; x &= new Boolean(true); x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.10_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.10_T1.js new file mode 100644 index 0000000000..4c8ab60794 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.10_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.10_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x ^= y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 2; + } + }; + + with (scope) { + x ^= 3; + } + + if (scope.x !== 1) { + $ERROR('#1: scope.x === 1. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.10_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.10_T2.js new file mode 100644 index 0000000000..d60c5268e2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.10_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.10_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x ^= y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + x ^= 3; +} + +if (scope.x !== 1) { + $ERROR('#1: scope.x === 1. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.10_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.10_T3.js new file mode 100644 index 0000000000..3ab81d0311 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.10_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.10_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x ^= y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 2; + } +}; + +with (outerScope) { + with (innerScope) { + x ^= 3; + } +} + +if (innerScope.x !== 1) { + $ERROR('#1: innerScope.x === 1. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.11_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.11_T1.js new file mode 100644 index 0000000000..83c4d0a116 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.11_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.11_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x |= y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 2; + } + }; + + with (scope) { + x |= 4; + } + + if (scope.x !== 6) { + $ERROR('#1: scope.x === 6. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.11_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.11_T2.js new file mode 100644 index 0000000000..b5b2521404 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.11_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.11_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x |= y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + x |= 4; +} + +if (scope.x !== 6) { + $ERROR('#1: scope.x === 6. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.11_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.11_T3.js new file mode 100644 index 0000000000..765602825a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.11_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.11_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x |= y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 2; + } +}; + +with (outerScope) { + with (innerScope) { + x |= 4; + } +} + +if (innerScope.x !== 6) { + $ERROR('#1: innerScope.x === 6. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.1_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.1_T1.js new file mode 100644 index 0000000000..0413dae848 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.1_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.1_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x *= y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 2; + } + }; + + with (scope) { + x *= 3; + } + + if (scope.x !== 6) { + $ERROR('#1: scope.x === 6. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.1_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.1_T2.js new file mode 100644 index 0000000000..8c3aeb44eb --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.1_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.1_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x *= y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + x *= 3; +} + +if (scope.x !== 6) { + $ERROR('#1: scope.x === 6. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.1_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.1_T3.js new file mode 100644 index 0000000000..c16b1e28ba --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.1_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.1_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x *= y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 2; + } +}; + +with (outerScope) { + with (innerScope) { + x *= 3; + } +} + +if (innerScope.x !== 6) { + $ERROR('#1: innerScope.x === 6. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.2_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.2_T1.js new file mode 100644 index 0000000000..ba068c7e8f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.2_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.2_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x /= y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 6; + } + }; + + with (scope) { + x /= 3; + } + + if (scope.x !== 2) { + $ERROR('#1: scope.x === 2. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.2_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.2_T2.js new file mode 100644 index 0000000000..1a49352745 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.2_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.2_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x /= y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 6; + } +}; + +with (scope) { + x /= 3; +} + +if (scope.x !== 2) { + $ERROR('#1: scope.x === 2. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.2_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.2_T3.js new file mode 100644 index 0000000000..bf6a1b075d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.2_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.2_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x /= y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 6; + } +}; + +with (outerScope) { + with (innerScope) { + x /= 3; + } +} + +if (innerScope.x !== 2) { + $ERROR('#1: innerScope.x === 2. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T1.js new file mode 100644 index 0000000000..98d661ee52 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.3_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x %= y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 5; + } + }; + + with (scope) { + x %= 3; + } + + if (scope.x !== 2) { + $ERROR('#1: scope.x === 2. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T2.js new file mode 100644 index 0000000000..aae2d81967 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.3_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x %= y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 5; + } +}; + +with (scope) { + x %= 3; +} + +if (scope.x !== 2) { + $ERROR('#1: scope.x === 2. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T3.js new file mode 100644 index 0000000000..37fa612122 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.3_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x %= y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 5; + } +}; + +with (outerScope) { + with (innerScope) { + x %= 3; + } +} + +if (innerScope.x !== 2) { + $ERROR('#1: innerScope.x === 2. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.4_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.4_T1.js new file mode 100644 index 0000000000..3eea3f5fd0 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.4_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.4_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x += y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 2; + } + }; + + with (scope) { + x += 1; + } + + if (scope.x !== 3) { + $ERROR('#1: scope.x === 3. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.4_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.4_T2.js new file mode 100644 index 0000000000..e2c206e5f8 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.4_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.4_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x += y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + x += 1; +} + +if (scope.x !== 3) { + $ERROR('#1: scope.x === 3. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.4_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.4_T3.js new file mode 100644 index 0000000000..253f443133 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.4_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.4_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x += y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 2; + } +}; + +with (outerScope) { + with (innerScope) { + x += 1; + } +} + +if (innerScope.x !== 3) { + $ERROR('#1: innerScope.x === 3. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.5_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.5_T1.js new file mode 100644 index 0000000000..db7be46259 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.5_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.5_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x -= y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 2; + } + }; + + with (scope) { + x -= 1; + } + + if (scope.x !== 1) { + $ERROR('#1: scope.x === 1. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.5_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.5_T2.js new file mode 100644 index 0000000000..9f89630261 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.5_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.5_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x -= y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + x -= 1; +} + +if (scope.x !== 1) { + $ERROR('#1: scope.x === 1. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.5_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.5_T3.js new file mode 100644 index 0000000000..e566b1071b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.5_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.5_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x -= y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 2; + } +}; + +with (outerScope) { + with (innerScope) { + x -= 1; + } +} + +if (innerScope.x !== 1) { + $ERROR('#1: innerScope.x === 1. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.6_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.6_T1.js new file mode 100644 index 0000000000..d24ea1428a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.6_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.6_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x <<= y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 2; + } + }; + + with (scope) { + x <<= 3; + } + + if (scope.x !== 16) { + $ERROR('#1: scope.x === 16. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.6_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.6_T2.js new file mode 100644 index 0000000000..de9ba12891 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.6_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.6_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x <<= y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + x <<= 3; +} + +if (scope.x !== 16) { + $ERROR('#1: scope.x === 16. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.6_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.6_T3.js new file mode 100644 index 0000000000..02b9948958 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.6_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.6_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x <<= y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 2; + } +}; + +with (outerScope) { + with (innerScope) { + x <<= 3; + } +} + +if (innerScope.x !== 16) { + $ERROR('#1: innerScope.x === 16. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.7_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.7_T1.js new file mode 100644 index 0000000000..ce62577f7d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.7_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.7_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x >>= y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 16; + } + }; + + with (scope) { + x >>= 3; + } + + if (scope.x !== 2) { + $ERROR('#1: scope.x === 2. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.7_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.7_T2.js new file mode 100644 index 0000000000..156f9dee5e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.7_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.7_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x >>= y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 16; + } +}; + +with (scope) { + x >>= 3; +} + +if (scope.x !== 2) { + $ERROR('#1: scope.x === 2. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.7_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.7_T3.js new file mode 100644 index 0000000000..40fb3ac7d9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.7_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.7_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x >>= y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 16; + } +}; + +with (outerScope) { + with (innerScope) { + x >>= 3; + } +} + +if (innerScope.x !== 2) { + $ERROR('#1: innerScope.x === 2. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.8_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.8_T1.js new file mode 100644 index 0000000000..b5c12284a2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.8_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.8_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x >>>= y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 16; + } + }; + + with (scope) { + x >>>= 3; + } + + if (scope.x !== 2) { + $ERROR('#1: scope.x === 2. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.8_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.8_T2.js new file mode 100644 index 0000000000..c639ede74b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.8_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.8_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x >>>= y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 16; + } +}; + +with (scope) { + x >>>= 3; +} + +if (scope.x !== 2) { + $ERROR('#1: scope.x === 2. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.8_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.8_T3.js new file mode 100644 index 0000000000..6a3ae27ed3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.8_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.8_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x >>>= y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 16; + } +}; + +with (outerScope) { + with (innerScope) { + x >>>= 3; + } +} + +if (innerScope.x !== 2) { + $ERROR('#1: innerScope.x === 2. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.9_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.9_T1.js new file mode 100644 index 0000000000..c84fde3e59 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.9_T1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.9_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding function environment record is not changed. + Check operator is "x &= y". +flags: [noStrict] +---*/ + +function testFunction() { + var x = 0; + var scope = { + get x() { + delete this.x; + return 5; + } + }; + + with (scope) { + x &= 3; + } + + if (scope.x !== 1) { + $ERROR('#1: scope.x === 1. Actual: ' + (scope.x)); + } + if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); + } +} +testFunction(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.9_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.9_T2.js new file mode 100644 index 0000000000..196f3fbb98 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.9_T2.js @@ -0,0 +1,36 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.9_T2 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding global environment record is not changed. + Check operator is "x &= y". +flags: [noStrict] +---*/ + +var x = 0; +var scope = { + get x() { + delete this.x; + return 5; + } +}; + +with (scope) { + x &= 3; +} + +if (scope.x !== 1) { + $ERROR('#1: scope.x === 1. Actual: ' + (scope.x)); +} +if (x !== 0) { + $ERROR('#2: x === 0. Actual: ' + (x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.9_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.9_T3.js new file mode 100644 index 0000000000..5de114342b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.9_T3.js @@ -0,0 +1,40 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A5.9_T3 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + object environment record. PutValue(lref, v) uses the initially + created Reference even if the environment binding is no longer present. + Binding in surrounding object environment record is not changed. + Check operator is "x &= y". +flags: [noStrict] +---*/ + +var outerScope = { + x: 0 +}; +var innerScope = { + get x() { + delete this.x; + return 5; + } +}; + +with (outerScope) { + with (innerScope) { + x &= 3; + } +} + +if (innerScope.x !== 1) { + $ERROR('#1: innerScope.x === 1. Actual: ' + (innerScope.x)); +} +if (outerScope.x !== 0) { + $ERROR('#2: outerScope.x === 0. Actual: ' + (outerScope.x)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.10_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.10_T1.js new file mode 100644 index 0000000000..39eff22930 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.10_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.10_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x ^= y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 1; + var innerX = (function() { + x ^= (eval("var x = 2;"), 4); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 5) { + $ERROR('#2: x === 5. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.11_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.11_T1.js new file mode 100644 index 0000000000..ddd7a7e7c6 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.11_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.11_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x |= y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 1; + var innerX = (function() { + x |= (eval("var x = 2;"), 4); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 5) { + $ERROR('#2: x === 5. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.1_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.1_T1.js new file mode 100644 index 0000000000..9a22cff2cf --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.1_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.1_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x *= y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 3; + var innerX = (function() { + x *= (eval("var x = 2;"), 4); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 12) { + $ERROR('#2: x === 12. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.2_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.2_T1.js new file mode 100644 index 0000000000..27d77cb35c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.2_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.2_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x /= y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 15; + var innerX = (function() { + x /= (eval("var x = 2;"), 3); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 5) { + $ERROR('#2: x === 5. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.3_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.3_T1.js new file mode 100644 index 0000000000..afe2057c22 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.3_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.3_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x %= y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 7; + var innerX = (function() { + x %= (eval("var x = 2;"), 4); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 3) { + $ERROR('#2: x === 3. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.4_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.4_T1.js new file mode 100644 index 0000000000..573afe3c37 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.4_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.4_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x += y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 3; + var innerX = (function() { + x += (eval("var x = 2;"), 1); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 4) { + $ERROR('#2: x === 4. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.5_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.5_T1.js new file mode 100644 index 0000000000..68fe4a009e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.5_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.5_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x -= y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 5; + var innerX = (function() { + x -= (eval("var x = 2;"), 1); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 4) { + $ERROR('#2: x === 4. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.6_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.6_T1.js new file mode 100644 index 0000000000..000a29b38e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.6_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.6_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x <<= y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 1; + var innerX = (function() { + x <<= (eval("var x = 2;"), 3); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 8) { + $ERROR('#2: x === 8. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.7_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.7_T1.js new file mode 100644 index 0000000000..8d51dcd60a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.7_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.7_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x >>= y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 8; + var innerX = (function() { + x >>= (eval("var x = 2;"), 1); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 4) { + $ERROR('#2: x === 4. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.8_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.8_T1.js new file mode 100644 index 0000000000..cd2ad7b02e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.8_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.8_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x >>>= y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 8; + var innerX = (function() { + x >>>= (eval("var x = 2;"), 1); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 4) { + $ERROR('#2: x === 4. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.9_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.9_T1.js new file mode 100644 index 0000000000..b266099441 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A6.9_T1.js @@ -0,0 +1,32 @@ +// Copyright (C) 2014 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator calls PutValue(lref, v) +es5id: S11.13.2_A6.9_T1 +description: > + Evaluating LeftHandSideExpression lref returns Reference type; Reference + base value is an environment record and environment record kind is + declarative environment record. PutValue(lref, v) uses the initially + created Reference even if a more local binding is available. + Check operator is "x &= y". +flags: [noStrict] +---*/ + +function testCompoundAssignment() { + var x = 5; + var innerX = (function() { + x &= (eval("var x = 2;"), 3); + return x; + })(); + + if (innerX !== 2) { + $ERROR('#1: innerX === 2. Actual: ' + (innerX)); + } + if (x !== 1) { + $ERROR('#2: x === 1. Actual: ' + (x)); + } +} +testCompoundAssignment(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T1.js new file mode 100644 index 0000000000..bc61168e50 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x ^= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] ^= expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] ^= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T2.js new file mode 100644 index 0000000000..361c997e44 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x ^= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] ^= expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] ^= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T3.js new file mode 100644 index 0000000000..cbc693a502 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x ^= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] ^= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T4.js new file mode 100644 index 0000000000..ff695c43a9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.10_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x ^= y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] ^= expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T1.js new file mode 100644 index 0000000000..2a8d537bc9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x |= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] |= expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] |= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T2.js new file mode 100644 index 0000000000..c64182b4bd --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x |= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] |= expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] |= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T3.js new file mode 100644 index 0000000000..9d1b880954 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x |= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] |= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T4.js new file mode 100644 index 0000000000..15feb15855 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.11_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x |= y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] |= expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T1.js new file mode 100644 index 0000000000..1a347b8e4b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x *= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] *= expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] *= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T2.js new file mode 100644 index 0000000000..13a8dfa1b2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x *= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] *= expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] *= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T3.js new file mode 100644 index 0000000000..70e26985dd --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x *= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] *= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T4.js new file mode 100644 index 0000000000..5fba889a16 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.1_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x *= y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] *= expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T1.js new file mode 100644 index 0000000000..a2e89c02cc --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x /= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] /= expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] /= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T2.js new file mode 100644 index 0000000000..cd548a0fb9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x /= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] /= expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] /= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T3.js new file mode 100644 index 0000000000..4e16925009 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x /= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] /= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T4.js new file mode 100644 index 0000000000..7ed2022cb9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.2_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x /= y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] /= expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T1.js new file mode 100644 index 0000000000..84fc7f688d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x %= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] %= expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] %= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T2.js new file mode 100644 index 0000000000..68a57350d3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x %= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] %= expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] %= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T3.js new file mode 100644 index 0000000000..6b03bec247 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x %= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] %= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T4.js new file mode 100644 index 0000000000..b406b3a09f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.3_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x %= y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] %= expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T1.js new file mode 100644 index 0000000000..a07f4dd0c9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x += y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] += expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] += expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T2.js new file mode 100644 index 0000000000..d5d768e6fb --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x += y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] += expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] += expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T3.js new file mode 100644 index 0000000000..1c7929451f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x += y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] += expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T4.js new file mode 100644 index 0000000000..ecf20f1f9b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.4_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x += y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] += expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T1.js new file mode 100644 index 0000000000..4dab9eaec1 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x -= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] -= expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] -= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T2.js new file mode 100644 index 0000000000..dc392ca4cd --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x -= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] -= expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] -= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T3.js new file mode 100644 index 0000000000..c3f1a810a0 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x -= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] -= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T4.js new file mode 100644 index 0000000000..296954a4ae --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.5_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x -= y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] -= expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T1.js new file mode 100644 index 0000000000..f5dfa4ba78 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x <<= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] <<= expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] <<= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T2.js new file mode 100644 index 0000000000..ca5f9b0a8f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x <<= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] <<= expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] <<= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T3.js new file mode 100644 index 0000000000..df4b1a5b9e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x <<= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] <<= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T4.js new file mode 100644 index 0000000000..67605051a4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.6_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x <<= y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] <<= expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T1.js new file mode 100644 index 0000000000..624101d171 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x >>= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] >>= expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] >>= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T2.js new file mode 100644 index 0000000000..5059a528e4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x >>= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] >>= expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] >>= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T3.js new file mode 100644 index 0000000000..3d8ef6b5f9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x >>= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] >>= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T4.js new file mode 100644 index 0000000000..f4ed7f80ec --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.7_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x >>= y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] >>= expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T1.js new file mode 100644 index 0000000000..8441f9076e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x >>>= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] >>>= expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] >>>= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T2.js new file mode 100644 index 0000000000..11a77a9016 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x >>>= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] >>>= expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] >>>= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T3.js new file mode 100644 index 0000000000..d223555424 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x >>>= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] >>>= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T4.js new file mode 100644 index 0000000000..6e8afd8de5 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.8_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x >>>= y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] >>>= expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T1.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T1.js new file mode 100644 index 0000000000..4cd0058c43 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T1.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + null value. + Check operator is "x &= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = null; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] &= expr(); +}); + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] &= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T2.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T2.js new file mode 100644 index 0000000000..58e4ae89d8 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T2.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. base is the + undefined value. + Check operator is "x &= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = undefined; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop()] &= expr(); +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + $ERROR("property key evaluated"); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] &= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T3.js new file mode 100644 index 0000000000..345ed367ce --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T3.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. Evaluating + ToPropertyKey(prop) throws an error. + Check operator is "x &= y". +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new DummyError(); + } + }; + var expr = function() { + $ERROR("right-hand side expression evaluated"); + }; + + base[prop] &= expr(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T4.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T4.js new file mode 100644 index 0000000000..fcb6adb0a8 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A7.9_T4.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Compound Assignment Operator evaluates its operands from left to right. +description: > + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. ToPropertyKey(prop) + is only called once. + Check operator is "x &= y". +---*/ + +var propKeyEvaluated = false; +var base = {}; +var prop = { + toString: function() { + assert(!propKeyEvaluated); + propKeyEvaluated = true; + return ""; + } +}; +var expr = function() { + return 0; +}; + +base[prop] &= expr(); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/add-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/add-arguments-strict-strict.js new file mode 100644 index 0000000000..145758b184 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/add-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-15-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(+=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments += 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/add-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/add-eval-strict-strict.js new file mode 100644 index 0000000000..57bdddf5e1 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/add-eval-strict-strict.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-4-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment operator(+=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval += 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/add-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/add-non-simple.js new file mode 100644 index 0000000000..1f94eb9e8e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/add-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound addition assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 += 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/add-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/add-whitespace.js new file mode 100644 index 0000000000..6e63978f49 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/add-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T4 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x += y +---*/ + +var x; + +x = -1; +assert.sameValue(x += -1, -2, 'U+0009 (expression)'); +assert.sameValue(x, -2, 'U+0009 (side effect)'); + +x = -1; +assert.sameValue(x+=-1, -2, 'U+000B (expression)'); +assert.sameValue(x, -2, 'U+000B (side effect)'); + +x = -1; +assert.sameValue(x+=-1, -2, 'U+000C (expression)'); +assert.sameValue(x, -2, 'U+000C (side effect)'); + +x = -1; +assert.sameValue(x += -1, -2, 'U+0020 (expression)'); +assert.sameValue(x, -2, 'U+0020 (side effect)'); + +x = -1; +assert.sameValue(x += -1, -2, 'U+00A0 (expression)'); +assert.sameValue(x, -2, 'U+00A0 (side effect)'); + +x = -1; +assert.sameValue(x ++= +-1, -2, 'U+000A (expression)'); +assert.sameValue(x, -2, 'U+000A (side effect)'); + +x = -1; +assert.sameValue(x
+=
-1, -2, 'U+000D (expression)'); +assert.sameValue(x, -2, 'U+000D (side effect)'); + +x = -1; +assert.sameValue(x
+=
-1, -2, 'U+2028 (expression)'); +assert.sameValue(x, -2, 'U+2028 (side effect)'); + +x = -1; +assert.sameValue(x
+=
-1, -2, 'U+2029 (expression)'); +assert.sameValue(x, -2, 'U+2029 (side effect)'); + +x = -1; +assert.sameValue(x +
+= +
-1, -2, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, -2, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/and-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/and-arguments-strict-strict.js new file mode 100644 index 0000000000..65f5b03bc3 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/and-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-20-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(&=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments &= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/and-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/and-eval-strict-strict.js new file mode 100644 index 0000000000..4706382651 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/and-eval-strict-strict.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-9-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment operator(&=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval &= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/and-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/and-whitespace.js new file mode 100644 index 0000000000..b4805bb278 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/and-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T9 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x &= y +---*/ + +var x; + +x = 1; +assert.sameValue(x &= 1, 1, 'U+0009 (expression)'); +assert.sameValue(x, 1, 'U+0009 (side effect)'); + +x = 1; +assert.sameValue(x&=1, 1, 'U+000B (expression)'); +assert.sameValue(x, 1, 'U+000B (side effect)'); + +x = 1; +assert.sameValue(x&=1, 1, 'U+000C (expression)'); +assert.sameValue(x, 1, 'U+000C (side effect)'); + +x = 1; +assert.sameValue(x &= 1, 1, 'U+0020 (expression)'); +assert.sameValue(x, 1, 'U+0020 (side effect)'); + +x = 1; +assert.sameValue(x &= 1, 1, 'U+00A0 (expression)'); +assert.sameValue(x, 1, 'U+00A0 (side effect)'); + +x = 1; +assert.sameValue(x +&= +1, 1, 'U+000A (expression)'); +assert.sameValue(x, 1, 'U+000A (side effect)'); + +x = 1; +assert.sameValue(x
&=
1, 1, 'U+000D (expression)'); +assert.sameValue(x, 1, 'U+000D (side effect)'); + +x = 1; +assert.sameValue(x
&=
1, 1, 'U+2028 (expression)'); +assert.sameValue(x, 1, 'U+2028 (side effect)'); + +x = 1; +assert.sameValue(x
&=
1, 1, 'U+2029 (expression)'); +assert.sameValue(x, 1, 'U+2029 (side effect)'); + +x = 1; +assert.sameValue(x +
&= +
1, 1, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, 1, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/browser.js b/js/src/tests/test262/language/expressions/compound-assignment/browser.js new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/browser.js diff --git a/js/src/tests/test262/language/expressions/compound-assignment/btws-and-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/btws-and-non-simple.js new file mode 100644 index 0000000000..9b8361ef9e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/btws-and-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound "bitwise and" assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 &= 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/btws-or-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/btws-or-non-simple.js new file mode 100644 index 0000000000..d52e29b340 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/btws-or-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound "bitwise or" assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 |= 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/btws-xor-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/btws-xor-non-simple.js new file mode 100644 index 0000000000..9dff195e9b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/btws-xor-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound "bitwise xor" assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 ^= 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js new file mode 100644 index 0000000000..de0fa45112 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.10_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; + +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 2; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x ^= 3; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js new file mode 100644 index 0000000000..696b2a8784 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js @@ -0,0 +1,43 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.4_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ + +var count = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x += 1; + count++; + }); + count++; + })(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js new file mode 100644 index 0000000000..f4d614ae06 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.4_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 2; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x += 1; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js new file mode 100644 index 0000000000..c589c1206e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js @@ -0,0 +1,43 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.5_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x -= 1; + count++; + }); + count++; +})(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js new file mode 100644 index 0000000000..35bc18dc14 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js @@ -0,0 +1,41 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.5_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 2; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x -= 1; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js new file mode 100644 index 0000000000..1e9c6279b4 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.6_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x <<= 3; + count++; + }); + count++; + })(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js new file mode 100644 index 0000000000..ae2a62b447 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js @@ -0,0 +1,41 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.6_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 2; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x <<= 3; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js new file mode 100644 index 0000000000..fdaa5b9b3f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.7_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +var scope = { + get x() { + delete this.x; + return 16; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x >>= 3; + count++; + }); + count++; + })(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js new file mode 100644 index 0000000000..d9d57f34ab --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js @@ -0,0 +1,41 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.7_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 16; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x >>= 3; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js new file mode 100644 index 0000000000..db1ec52a06 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.8_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +var scope = { + get x() { + delete this.x; + return 16; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x >>>= 3; + count++; + }); + count++; + })(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js new file mode 100644 index 0000000000..3b6a864575 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js @@ -0,0 +1,41 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.8_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 16; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x >>>= 3; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js new file mode 100644 index 0000000000..7cbe910c9c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.11_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x |= 4; + count++; + }); + count++; + })(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js new file mode 100644 index 0000000000..c106d4dd97 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.9_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +var scope = { + get x() { + delete this.x; + return 5; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x &= 3; + count++; + }); + count++; + })(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js new file mode 100644 index 0000000000..f758fa4426 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js @@ -0,0 +1,41 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.9_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 5; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x &= 3; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js new file mode 100644 index 0000000000..37c46072fd --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js @@ -0,0 +1,41 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.11_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 2; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x |= 4; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js new file mode 100644 index 0000000000..cb3deef671 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.1_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x *= 3; + count++; + }); + count++; + })(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js new file mode 100644 index 0000000000..143fa2d1df --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js @@ -0,0 +1,41 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.1_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 2; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x *= 3; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js new file mode 100644 index 0000000000..ac41064fec --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.2_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +var scope = { + get x() { + delete this.x; + return 6; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x /= 3; + count++; + }); + count++; + })(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js new file mode 100644 index 0000000000..caf84805a9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js @@ -0,0 +1,41 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.2_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 6; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x /= 3; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js new file mode 100644 index 0000000000..e593221296 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.3_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +var scope = { + get x() { + delete this.x; + return 5; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x %= 3; + count++; + }); + count++; + })(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js new file mode 100644 index 0000000000..90fe161825 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js @@ -0,0 +1,41 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.3_T5) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +Object.defineProperty(this, "x", { + configurable: true, + get: function() { + delete this.x; + return 5; + } +}); + +(function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x %= 3; + count++; + }); + count++; +})(); + +assert.sameValue(count, 2); +assert(!('x' in this)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js new file mode 100644 index 0000000000..4f13b58d74 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js @@ -0,0 +1,42 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Compound Assignment Operator calls PutValue(lref, v) (formerly S11.13.2_A5.10_T4) +info: | + The concrete Environment Record method SetMutableBinding for object Environment + Records attempts to set the value of the Environment Record's associated binding + object's property whose name is the value of the argument N to the value of argument V. + A property named N normally already exists but if it does not or is not currently writable, + error handling is determined by the value of the Boolean argument S. + + Let stillExists be ? HasProperty(bindings, N). + If stillExists is false and S is true, throw a ReferenceError exception. +flags: [noStrict] +---*/ +var count = 0; +var scope = { + get x() { + delete this.x; + return 2; + } +}; + +with (scope) { + (function() { + "use strict"; + assert.throws(ReferenceError, () => { + count++; + x ^= 3; + count++; + }); + count++; + })(); +} + +assert.sameValue(count, 2); +assert(!('x' in scope)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/div-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/div-arguments-strict-strict.js new file mode 100644 index 0000000000..83b57671c8 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/div-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-13-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(/=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments /= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/div-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/div-eval-strict-strict.js new file mode 100644 index 0000000000..d65990a988 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/div-eval-strict-strict.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-2-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment operator(/=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval /= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/div-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/div-non-simple.js new file mode 100644 index 0000000000..ce5a54be44 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/div-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound division assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 /= 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/div-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/div-whitespace.js new file mode 100644 index 0000000000..5491504675 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/div-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T2 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x /= y +---*/ + +var x; + +x = -1; +assert.sameValue(x /= -1, 1, 'U+0009 (expression)'); +assert.sameValue(x, 1, 'U+0009 (side effect)'); + +x = -1; +assert.sameValue(x/=-1, 1, 'U+000B (expression)'); +assert.sameValue(x, 1, 'U+000B (side effect)'); + +x = -1; +assert.sameValue(x/=-1, 1, 'U+000C (expression)'); +assert.sameValue(x, 1, 'U+000C (side effect)'); + +x = -1; +assert.sameValue(x /= -1, 1, 'U+0020 (expression)'); +assert.sameValue(x, 1, 'U+0020 (side effect)'); + +x = -1; +assert.sameValue(x /= -1, 1, 'U+00A0 (expression)'); +assert.sameValue(x, 1, 'U+00A0 (side effect)'); + +x = -1; +assert.sameValue(x +/= +-1, 1, 'U+000A (expression)'); +assert.sameValue(x, 1, 'U+000A (side effect)'); + +x = -1; +assert.sameValue(x
/=
-1, 1, 'U+000D (expression)'); +assert.sameValue(x, 1, 'U+000D (side effect)'); + +x = -1; +assert.sameValue(x
/=
-1, 1, 'U+2028 (expression)'); +assert.sameValue(x, 1, 'U+2028 (side effect)'); + +x = -1; +assert.sameValue(x
/=
-1, 1, 'U+2029 (expression)'); +assert.sameValue(x, 1, 'U+2029 (side effect)'); + +x = -1; +assert.sameValue(x +
/= +
-1, 1, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, 1, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/left-shift-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/left-shift-non-simple.js new file mode 100644 index 0000000000..829fbaee21 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/left-shift-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound "left shift" assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 <<= 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/lshift-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/lshift-arguments-strict-strict.js new file mode 100644 index 0000000000..7704c1372c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/lshift-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-17-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(<<=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments <<= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/lshift-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/lshift-eval-strict-strict.js new file mode 100644 index 0000000000..c292a4521e --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/lshift-eval-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-6-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment + operator(<<=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval <<= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/lshift-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/lshift-whitespace.js new file mode 100644 index 0000000000..3036e42e4b --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/lshift-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T6 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x <<= y +---*/ + +var x; + +x = 1; +assert.sameValue(x <<= 1, 2, 'U+0009 (expression)'); +assert.sameValue(x, 2, 'U+0009 (side effect)'); + +x = 1; +assert.sameValue(x<<=1, 2, 'U+000B (expression)'); +assert.sameValue(x, 2, 'U+000B (side effect)'); + +x = 1; +assert.sameValue(x<<=1, 2, 'U+000C (expression)'); +assert.sameValue(x, 2, 'U+000C (side effect)'); + +x = 1; +assert.sameValue(x <<= 1, 2, 'U+0020 (expression)'); +assert.sameValue(x, 2, 'U+0020 (side effect)'); + +x = 1; +assert.sameValue(x <<= 1, 2, 'U+00A0 (expression)'); +assert.sameValue(x, 2, 'U+00A0 (side effect)'); + +x = 1; +assert.sameValue(x +<<= +1, 2, 'U+000A (expression)'); +assert.sameValue(x, 2, 'U+000A (side effect)'); + +x = 1; +assert.sameValue(x
<<=
1, 2, 'U+000D (expression)'); +assert.sameValue(x, 2, 'U+000D (side effect)'); + +x = 1; +assert.sameValue(x
<<=
1, 2, 'U+2028 (expression)'); +assert.sameValue(x, 2, 'U+2028 (side effect)'); + +x = 1; +assert.sameValue(x
<<=
1, 2, 'U+2029 (expression)'); +assert.sameValue(x, 2, 'U+2029 (side effect)'); + +x = 1; +assert.sameValue(x +
<<= +
1, 2, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, 2, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/mod-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/mod-arguments-strict-strict.js new file mode 100644 index 0000000000..cf5071d6da --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/mod-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-14-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(%=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments %= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/mod-div-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/mod-div-non-simple.js new file mode 100644 index 0000000000..a66a73279d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/mod-div-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound "modular division" assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 %= 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/mod-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/mod-eval-strict-strict.js new file mode 100644 index 0000000000..9332c16cf5 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/mod-eval-strict-strict.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-3-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment operator(%=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval %= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/mod-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/mod-whitespace.js new file mode 100644 index 0000000000..e9059eda6f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/mod-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T3 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x %= y +---*/ + +var x; + +x = -1; +assert.sameValue(x %= -1, -0, 'U+0009 (expression)'); +assert.sameValue(x, -0, 'U+0009 (side effect)'); + +x = -1; +assert.sameValue(x%=-1, -0, 'U+000B (expression)'); +assert.sameValue(x, -0, 'U+000B (side effect)'); + +x = -1; +assert.sameValue(x%=-1, -0, 'U+000C (expression)'); +assert.sameValue(x, -0, 'U+000C (side effect)'); + +x = -1; +assert.sameValue(x %= -1, -0, 'U+0020 (expression)'); +assert.sameValue(x, -0, 'U+0020 (side effect)'); + +x = -1; +assert.sameValue(x %= -1, -0, 'U+00A0 (expression)'); +assert.sameValue(x, -0, 'U+00A0 (side effect)'); + +x = -1; +assert.sameValue(x +%= +-1, -0, 'U+000A (expression)'); +assert.sameValue(x, -0, 'U+000A (side effect)'); + +x = -1; +assert.sameValue(x
%=
-1, -0, 'U+000D (expression)'); +assert.sameValue(x, -0, 'U+000D (side effect)'); + +x = -1; +assert.sameValue(x
%=
-1, -0, 'U+2028 (expression)'); +assert.sameValue(x, -0, 'U+2028 (side effect)'); + +x = -1; +assert.sameValue(x
%=
-1, -0, 'U+2029 (expression)'); +assert.sameValue(x, -0, 'U+2029 (side effect)'); + +x = -1; +assert.sameValue(x +
%= +
-1, -0, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, -0, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/mult-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/mult-arguments-strict-strict.js new file mode 100644 index 0000000000..ff130c7fdb --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/mult-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-12-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(*=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments *= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/mult-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/mult-eval-strict-strict.js new file mode 100644 index 0000000000..e3b9571c33 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/mult-eval-strict-strict.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-1-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment operator(*=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval *= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/mult-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/mult-non-simple.js new file mode 100644 index 0000000000..ca674a09d7 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/mult-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound multiplication assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 *= 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/mult-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/mult-whitespace.js new file mode 100644 index 0000000000..610f11b3a0 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/mult-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T1 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x *= y +---*/ + +var x; + +x = -1; +assert.sameValue(x *= -1, 1, 'U+0009 (expression)'); +assert.sameValue(x, 1, 'U+0009 (side effect)'); + +x = -1; +assert.sameValue(x*=-1, 1, 'U+000B (expression)'); +assert.sameValue(x, 1, 'U+000B (side effect)'); + +x = -1; +assert.sameValue(x*=-1, 1, 'U+000C (expression)'); +assert.sameValue(x, 1, 'U+000C (side effect)'); + +x = -1; +assert.sameValue(x *= -1, 1, 'U+0020 (expression)'); +assert.sameValue(x, 1, 'U+0020 (side effect)'); + +x = -1; +assert.sameValue(x *= -1, 1, 'U+00A0 (expression)'); +assert.sameValue(x, 1, 'U+00A0 (side effect)'); + +x = -1; +assert.sameValue(x +*= +-1, 1, 'U+000A (expression)'); +assert.sameValue(x, 1, 'U+000A (side effect)'); + +x = -1; +assert.sameValue(x
*=
-1, 1, 'U+000D (expression)'); +assert.sameValue(x, 1, 'U+000D (side effect)'); + +x = -1; +assert.sameValue(x
*=
-1, 1, 'U+2028 (expression)'); +assert.sameValue(x, 1, 'U+2028 (side effect)'); + +x = -1; +assert.sameValue(x
*=
-1, 1, 'U+2029 (expression)'); +assert.sameValue(x, 1, 'U+2029 (side effect)'); + +x = -1; +assert.sameValue(x +
*= +
-1, 1, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, 1, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/or-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/or-arguments-strict-strict.js new file mode 100644 index 0000000000..6c2d92d29f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/or-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-22-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(|=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments |= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/or-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/or-eval-strict-strict.js new file mode 100644 index 0000000000..65f633282a --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/or-eval-strict-strict.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-11-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment operator(|=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval |= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/or-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/or-whitespace.js new file mode 100644 index 0000000000..a8558ffd7c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/or-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T11 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x |= y +---*/ + +var x; + +x = 0; +assert.sameValue(x |= 1, 1, 'U+0009 (expression)'); +assert.sameValue(x, 1, 'U+0009 (side effect)'); + +x = 0; +assert.sameValue(x|=1, 1, 'U+000B (expression)'); +assert.sameValue(x, 1, 'U+000B (side effect)'); + +x = 0; +assert.sameValue(x|=1, 1, 'U+000C (expression)'); +assert.sameValue(x, 1, 'U+000C (side effect)'); + +x = 0; +assert.sameValue(x |= 1, 1, 'U+0020 (expression)'); +assert.sameValue(x, 1, 'U+0020 (side effect)'); + +x = 0; +assert.sameValue(x |= 1, 1, 'U+00A0 (expression)'); +assert.sameValue(x, 1, 'U+00A0 (side effect)'); + +x = 0; +assert.sameValue(x +|= +1, 1, 'U+000A (expression)'); +assert.sameValue(x, 1, 'U+000A (side effect)'); + +x = 0; +assert.sameValue(x
|=
1, 1, 'U+000D (expression)'); +assert.sameValue(x, 1, 'U+000D (side effect)'); + +x = 0; +assert.sameValue(x
|=
1, 1, 'U+2028 (expression)'); +assert.sameValue(x, 1, 'U+2028 (side effect)'); + +x = 0; +assert.sameValue(x
|=
1, 1, 'U+2029 (expression)'); +assert.sameValue(x, 1, 'U+2029 (side effect)'); + +x = 0; +assert.sameValue(x +
|= +
1, 1, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, 1, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/right-shift-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/right-shift-non-simple.js new file mode 100644 index 0000000000..7e814e2223 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/right-shift-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound "right shift" assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 >>= 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/shell.js b/js/src/tests/test262/language/expressions/compound-assignment/shell.js new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/shell.js diff --git a/js/src/tests/test262/language/expressions/compound-assignment/srshift-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/srshift-arguments-strict-strict.js new file mode 100644 index 0000000000..00ef900315 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/srshift-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-18-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(>>=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments >>= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/srshift-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/srshift-eval-strict-strict.js new file mode 100644 index 0000000000..e197aab414 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/srshift-eval-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-7-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment + operator(>>=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval >>= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/srshift-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/srshift-whitespace.js new file mode 100644 index 0000000000..4e4675045f --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/srshift-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T7 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x >>= y +---*/ + +var x; + +x = 1; +assert.sameValue(x >>= 1, 0, 'U+0009 (expression)'); +assert.sameValue(x, 0, 'U+0009 (side effect)'); + +x = 1; +assert.sameValue(x>>=1, 0, 'U+000B (expression)'); +assert.sameValue(x, 0, 'U+000B (side effect)'); + +x = 1; +assert.sameValue(x>>=1, 0, 'U+000C (expression)'); +assert.sameValue(x, 0, 'U+000C (side effect)'); + +x = 1; +assert.sameValue(x >>= 1, 0, 'U+0020 (expression)'); +assert.sameValue(x, 0, 'U+0020 (side effect)'); + +x = 1; +assert.sameValue(x >>= 1, 0, 'U+00A0 (expression)'); +assert.sameValue(x, 0, 'U+00A0 (side effect)'); + +x = 1; +assert.sameValue(x +>>= +1, 0, 'U+000A (expression)'); +assert.sameValue(x, 0, 'U+000A (side effect)'); + +x = 1; +assert.sameValue(x
>>=
1, 0, 'U+000D (expression)'); +assert.sameValue(x, 0, 'U+000D (side effect)'); + +x = 1; +assert.sameValue(x
>>=
1, 0, 'U+2028 (expression)'); +assert.sameValue(x, 0, 'U+2028 (side effect)'); + +x = 1; +assert.sameValue(x
>>=
1, 0, 'U+2029 (expression)'); +assert.sameValue(x, 0, 'U+2029 (side effect)'); + +x = 1; +assert.sameValue(x +
>>= +
1, 0, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, 0, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/sub-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/sub-arguments-strict-strict.js new file mode 100644 index 0000000000..0bd8b2cd0c --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/sub-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-16-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(-=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments -= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/sub-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/sub-eval-strict-strict.js new file mode 100644 index 0000000000..a8b98e484d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/sub-eval-strict-strict.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-5-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment operator(-=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval -= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/sub-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/sub-whitespace.js new file mode 100644 index 0000000000..69f19463c9 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/sub-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T5 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x -= y +---*/ + +var x; + +x = -1; +assert.sameValue(x -= 1, -2, 'U+0009 (expression)'); +assert.sameValue(x, -2, 'U+0009 (side effect)'); + +x = -1; +assert.sameValue(x-=1, -2, 'U+000B (expression)'); +assert.sameValue(x, -2, 'U+000B (side effect)'); + +x = -1; +assert.sameValue(x-=1, -2, 'U+000C (expression)'); +assert.sameValue(x, -2, 'U+000C (side effect)'); + +x = -1; +assert.sameValue(x -= 1, -2, 'U+0020 (expression)'); +assert.sameValue(x, -2, 'U+0020 (side effect)'); + +x = -1; +assert.sameValue(x -= 1, -2, 'U+00A0 (expression)'); +assert.sameValue(x, -2, 'U+00A0 (side effect)'); + +x = -1; +assert.sameValue(x +-= +1, -2, 'U+000A (expression)'); +assert.sameValue(x, -2, 'U+000A (side effect)'); + +x = -1; +assert.sameValue(x
-=
1, -2, 'U+000D (expression)'); +assert.sameValue(x, -2, 'U+000D (side effect)'); + +x = -1; +assert.sameValue(x
-=
1, -2, 'U+2028 (expression)'); +assert.sameValue(x, -2, 'U+2028 (side effect)'); + +x = -1; +assert.sameValue(x
-=
1, -2, 'U+2029 (expression)'); +assert.sameValue(x, -2, 'U+2029 (side effect)'); + +x = -1; +assert.sameValue(x +
-= +
1, -2, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, -2, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/subtract-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/subtract-non-simple.js new file mode 100644 index 0000000000..b7287ac573 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/subtract-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound subtraction assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 -= 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/u-right-shift-non-simple.js b/js/src/tests/test262/language/expressions/compound-assignment/u-right-shift-non-simple.js new file mode 100644 index 0000000000..3ebdab7788 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/u-right-shift-non-simple.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators-static-semantics-early-errors +info: | + It is an early Syntax Error if AssignmentTargetType of + LeftHandSideExpression is invalid or strict. +description: Compound "unsigned right shift" assignment with non-simple target +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +1 >>>= 1; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/urshift-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/urshift-arguments-strict-strict.js new file mode 100644 index 0000000000..234f7bd714 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/urshift-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-19-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(>>>=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments >>>= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/urshift-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/urshift-eval-strict-strict.js new file mode 100644 index 0000000000..6db086ec18 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/urshift-eval-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-8-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment + operator(>>>=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval >>>= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/urshift-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/urshift-whitespace.js new file mode 100644 index 0000000000..a17a46973d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/urshift-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T8 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x >>>= y +---*/ + +var x; + +x = 1; +assert.sameValue(x >>>= 1, 0, 'U+0009 (expression)'); +assert.sameValue(x, 0, 'U+0009 (side effect)'); + +x = 1; +assert.sameValue(x>>>=1, 0, 'U+000B (expression)'); +assert.sameValue(x, 0, 'U+000B (side effect)'); + +x = 1; +assert.sameValue(x>>>=1, 0, 'U+000C (expression)'); +assert.sameValue(x, 0, 'U+000C (side effect)'); + +x = 1; +assert.sameValue(x >>>= 1, 0, 'U+0020 (expression)'); +assert.sameValue(x, 0, 'U+0020 (side effect)'); + +x = 1; +assert.sameValue(x >>>= 1, 0, 'U+00A0 (expression)'); +assert.sameValue(x, 0, 'U+00A0 (side effect)'); + +x = 1; +assert.sameValue(x +>>>= +1, 0, 'U+000A (expression)'); +assert.sameValue(x, 0, 'U+000A (side effect)'); + +x = 1; +assert.sameValue(x
>>>=
1, 0, 'U+000D (expression)'); +assert.sameValue(x, 0, 'U+000D (side effect)'); + +x = 1; +assert.sameValue(x
>>>=
1, 0, 'U+2028 (expression)'); +assert.sameValue(x, 0, 'U+2028 (side effect)'); + +x = 1; +assert.sameValue(x
>>>=
1, 0, 'U+2029 (expression)'); +assert.sameValue(x, 0, 'U+2029 (side effect)'); + +x = 1; +assert.sameValue(x +
>>>= +
1, 0, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, 0, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/language/expressions/compound-assignment/xor-arguments-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/xor-arguments-strict-strict.js new file mode 100644 index 0000000000..0f50993e5d --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/xor-arguments-strict-strict.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-21-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier arguments + appear as the LeftHandSideExpression of a Compound Assignment + operator(^=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +arguments ^= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/xor-eval-strict-strict.js b/js/src/tests/test262/language/expressions/compound-assignment/xor-eval-strict-strict.js new file mode 100644 index 0000000000..55fb822df1 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/xor-eval-strict-strict.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +'use strict'; +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 11.13.2-6-10-s +esid: sec-assignment-operators +description: > + Strict Mode - SyntaxError is thrown if the identifier eval appear + as the LeftHandSideExpression of a Compound Assignment operator(^=) +flags: [onlyStrict] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +eval ^= 20; diff --git a/js/src/tests/test262/language/expressions/compound-assignment/xor-whitespace.js b/js/src/tests/test262/language/expressions/compound-assignment/xor-whitespace.js new file mode 100644 index 0000000000..7baad7be85 --- /dev/null +++ b/js/src/tests/test262/language/expressions/compound-assignment/xor-whitespace.js @@ -0,0 +1,59 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + White Space and Line Terminator between LeftHandSideExpression and "@=" + or between "@=" and AssignmentExpression are allowed +es5id: 11.13.2_A1_T10 +esid: sec-assignment-operators +description: Checking by using eval, check operator is x ^= y +---*/ + +var x; + +x = 1; +assert.sameValue(x ^= 1, 0, 'U+0009 (expression)'); +assert.sameValue(x, 0, 'U+0009 (side effect)'); + +x = 1; +assert.sameValue(x^=1, 0, 'U+000B (expression)'); +assert.sameValue(x, 0, 'U+000B (side effect)'); + +x = 1; +assert.sameValue(x^=1, 0, 'U+000C (expression)'); +assert.sameValue(x, 0, 'U+000C (side effect)'); + +x = 1; +assert.sameValue(x ^= 1, 0, 'U+0020 (expression)'); +assert.sameValue(x, 0, 'U+0020 (side effect)'); + +x = 1; +assert.sameValue(x ^= 1, 0, 'U+00A0 (expression)'); +assert.sameValue(x, 0, 'U+00A0 (side effect)'); + +x = 1; +assert.sameValue(x +^= +1, 0, 'U+000A (expression)'); +assert.sameValue(x, 0, 'U+000A (side effect)'); + +x = 1; +assert.sameValue(x
^=
1, 0, 'U+000D (expression)'); +assert.sameValue(x, 0, 'U+000D (side effect)'); + +x = 1; +assert.sameValue(x
^=
1, 0, 'U+2028 (expression)'); +assert.sameValue(x, 0, 'U+2028 (side effect)'); + +x = 1; +assert.sameValue(x
^=
1, 0, 'U+2029 (expression)'); +assert.sameValue(x, 0, 'U+2029 (side effect)'); + +x = 1; +assert.sameValue(x +
^= +
1, 0, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); +assert.sameValue(x, 0, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); + +reportCompare(0, 0); |