Chromium Code Reviews| Index: test/mjsunit/setter-on-constructor-prototype.js |
| =================================================================== |
| --- test/mjsunit/setter-on-constructor-prototype.js (revision 3879) |
| +++ test/mjsunit/setter-on-constructor-prototype.js (working copy) |
| @@ -25,66 +25,87 @@ |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| +// Flags: --allow-natives-syntax |
| -function C1() { |
| - this.x = 23; |
| +function RunTest(ensure_fast_case) { |
| + function C1() { |
| + this.x = 23; |
| + }; |
| + C1.prototype = { set x(value) { this.y = 23; } }; |
| + if (ensure_fast_case) { |
| + %ToFastProperties(C1.prototype); |
| + } |
| + |
| + for (var i = 0; i < 10; i++) { |
| + var c1 = new C1(); |
| + assertEquals("undefined", typeof c1.x); |
| + assertEquals(23, c1.y); |
| + } |
| + |
| + |
| + function C2() { |
| + this.x = 23; |
| + }; |
| + C2.prototype = { }; |
| + C2.prototype.__proto__ = { set x(value) { this.y = 23; } }; |
| + if (ensure_fast_case) { |
| + %ToFastProperties(C2.prototype.__proto__) |
| + } |
| + |
| + for (var i = 0; i < 10; i++) { |
| + var c2 = new C2(); |
| + assertEquals("undefined", typeof c2.x); |
| + assertEquals(23, c2.y); |
| + } |
| + |
| + |
| + function C3() { |
| + this.x = 23; |
| + }; |
| + C3.prototype = { }; |
| + C3.prototype.__defineSetter__('x', function(value) { this.y = 23; }); |
| + if (ensure_fast_case) { |
| + %ToFastProperties(C3.prototype); |
| + } |
| + |
| + for (var i = 0; i < 10; i++) { |
| + var c3 = new C3(); |
| + assertEquals("undefined", typeof c3.x); |
| + assertEquals(23, c3.y); |
| + } |
| + |
| + |
| + function C4() { |
| + this.x = 23; |
| + }; |
| + C4.prototype = { }; |
| + C4.prototype.__proto__ = { }; |
| + C4.prototype.__proto__.__defineSetter__('x', function(value) { this.y = 23; }); |
| + if (ensure_fast_case) { |
| + %ToFastProperties(C4.prototype.__proto__); |
| + } |
| + |
| + for (var i = 0; i < 10; i++) { |
| + var c4 = new C4(); |
| + assertEquals("undefined", typeof c4.x); |
| + assertEquals(23, c4.y); |
| + } |
| + |
| + |
| + function D() { |
| + this.x = 23; |
| + }; |
| + D.prototype = 1; |
| + if (ensure_fast_case) { |
| + %ToFastProperties(D.prototype); |
| + } |
| + |
| + for (var i = 0; i < 10; i++) { |
| + var d = new D(); |
| + assertEquals(23, d.x); |
| + assertEquals("undefined", typeof d.y); |
| + } |
| } |
| -C1.prototype = { set x(value) { this.y = 23; } } |
| -for (var i = 0; i < 10; i++) { |
| - var c1 = new C1(); |
| - assertEquals("undefined", typeof c1.x); |
| - assertEquals(23, c1.y); |
| -} |
| - |
| - |
| -function C2() { |
| - this.x = 23; |
| -} |
| -C2.prototype = { } |
| -C2.prototype.__proto__ = { set x(value) { this.y = 23; } } |
| - |
| -for (var i = 0; i < 10; i++) { |
| - var c2 = new C2(); |
| - assertEquals("undefined", typeof c2.x); |
| - assertEquals(23, c2.y); |
| -} |
| - |
| - |
| -function C3() { |
| - this.x = 23; |
| -} |
| -C3.prototype = { } |
| -C3.prototype.__defineSetter__('x', function(value) { this.y = 23; }) |
| - |
| -for (var i = 0; i < 10; i++) { |
| - var c3 = new C3(); |
| - assertEquals("undefined", typeof c3.x); |
| - assertEquals(23, c3.y); |
| -} |
| - |
| - |
| -function C4() { |
| - this.x = 23; |
| -} |
| -C4.prototype = { } |
| -C4.prototype.__proto__ = { } |
| -C4.prototype.__proto__.__defineSetter__('x', function(value) { this.y = 23; }) |
| - |
| -for (var i = 0; i < 10; i++) { |
| - var c4 = new C4(); |
| - assertEquals("undefined", typeof c4.x); |
| - assertEquals(23, c4.y); |
| -} |
| - |
| - |
| -function D() { |
| - this.x = 23; |
| -} |
| -D.prototype = 1; |
| - |
| -for (var i = 0; i < 10; i++) { |
| - var d = new D(); |
| - assertEquals(23, d.x); |
| - assertEquals("undefined", typeof d.y); |
| -} |
| +RunTest(false); |
| +//RunTest(true); |
|
Mads Ager (chromium)
2010/02/18 09:19:35
Code in comment - doesn't this work?
Søren Thygesen Gjesse
2010/02/18 09:42:52
http://codereview.chromium.org/647007 (it did work
|