X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/tests/stress/assignment-in-function-call-bracket-node.js?ds=inline diff --git a/tests/stress/assignment-in-function-call-bracket-node.js b/tests/stress/assignment-in-function-call-bracket-node.js new file mode 100644 index 0000000..54f70fe --- /dev/null +++ b/tests/stress/assignment-in-function-call-bracket-node.js @@ -0,0 +1,126 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error('bad value: ' + actual); +} + +// Simple assignment (not FunctionCallBracketNode). + +shouldBe(function () { + var object = { + null: 'ok' + }; + + return object[object = null]; +}(), 'ok'); + +shouldBe(function (value) { + var object = { }; + object.null = 'ok'; + + return object[object = value]; +}(null), 'ok'); + +shouldBe(function () { + var object = { + null: 'ok' + }; + + return object['null']; +}(), 'ok'); + +shouldBe(function (value) { + var object = { }; + object.null = 'ok'; + + return object['null']; +}(null), 'ok'); + +shouldBe(function () { + var object = { + null: 'ok' + }; + + function fill() { + return object = null; + } + + return object[fill()]; +}(), 'ok'); + +shouldBe(function (value) { + var object = { }; + object.null = 'ok'; + + function fill() { + return object = value; + } + + return object[fill()]; +}(null), 'ok'); + +// FunctionCallBracketNode. + +shouldBe(function () { + var object = { + null: function () { + return 'ok'; + } + }; + + return object[object = null](); +}(), 'ok'); + +shouldBe(function (value) { + var object = { }; + object.null = function () { + return 'ok'; + }; + + return object[object = value](); +}(null), 'ok'); + +shouldBe(function () { + var object = { + null: function () { + return 'ok'; + } + }; + + return object['null'](); +}(), 'ok'); + +shouldBe(function (value) { + var object = { }; + object.null = function () { + return 'ok'; + }; + + return object['null'](); +}(null), 'ok'); + +shouldBe(function () { + var object = { + null: function () { + return 'ok'; + } + }; + + function fill() { + return object = null; + } + + return object[fill()](); +}(), 'ok'); + +shouldBe(function (value) { + var object = { }; + object.null = function () { + return 'ok'; + }; + + function fill() { + return object = value; + } + + return object[fill()](); +}(null), 'ok');