summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/bug703157.js
blob: 2acdd92ebd3f8119eb565e087a6550acb9ef7cec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Define a test object
var test = {x:1,y:2};

// Put the object into dictionary mode by deleting 
// a property that was not the last one added.
delete test.x;

// Define a an accessor property with a setter that 
// itself calls Object.defineProperty
Object.defineProperty(test, "foo", {
    get: function() { return 1; },
    set: function(v) { 
        Object.defineProperty(this, "foo", { value: v });
        // Prints the correct object descriptor
        assertEq(this.foo, 33);
    },
    configurable: true
});

// Add another property, so generateOwnShape does not replace the foo property.
test.other = 0;

// This line prints 1, as expected
assertEq(test.foo, 1);

// Now set the property.  This calls the setter method above.
// And the setter method prints the expected value and property descriptor.
test.foo = 33;

// Finally read the newly set value.
assertEq(test.foo, 33);

// Check that enumeration order is correct.
var arr = [];
for (var x in test) arr.push(x);
assertEq("" + arr, "y,other");