Closed Bug 612260 Opened 14 years ago Closed 14 years ago

Classes extending Array don't work

Categories

(Core :: JavaScript Engine, defect)

x86
Windows Vista
defect
Not set
major

Tracking

()

RESOLVED DUPLICATE of bug 599159
Tracking Status
blocking2.0 --- betaN+

People

(Reporter: t.brain, Assigned: bhackett1024)

References

Details

(Keywords: regression)

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET4.0C) Build Identifier: 4.0b7 A subclass of Array stops reporting the right length when an additional method is added to its prototype. This is a regression in 4.0b7, and is confirmed to work as expected in 4.0b6 and 3.5. Reproducible: Always Steps to Reproduce: Use the following code: function MyArray() {} MyArray.prototype=new Array(); MyArray.prototype.item=function (x) { return this[x]; } var arr=new MyArray(); arr.push("foo"); alert(arr.length); Actual Results: Alerts 0 in 4.0b7, alerts 1 in 4.0b6 and 3.5. Expected Results: Should alert 1.
Sorry, I meant 3.6 in the original report. Confirmed to be working as expected in 3.6.12, 3.5.13, 3.0.19 and 2.0.0.20.
Due to skipped revisions, the first bad revision could be any of: changeset: 53606:a55097cd48d8 user: Jim Blandy <jimb@mozilla.org> date: Wed Sep 15 13:43:54 2010 -0700 summary: Bug 537873, Bug 514574: Use ObjectOps::setProperty for both fast and slow arrays. r=brendan changeset: 53607:8f7761878ba5 user: Jim Blandy <jimb@mozilla.org> date: Wed Sep 15 13:43:54 2010 -0700 summary: Bug 537873, Bug 514574: Tests for strict mode assignments to read-only properties, deletions of non-configurable properties. r=jorendorff changeset: 53608:9cfceee11abd user: Jim Blandy <jimb@mozilla.org> date: Wed Sep 15 13:43:54 2010 -0700 summary: Bug 537873, Bug 514574: Delete unused property operation typedefs: JSDefinePropOp, JSPropertyIdOp. r=luke changeset: 53609:a409054e1395 user: Jim Blandy <jimb@mozilla.org> date: Wed Sep 15 13:43:55 2010 -0700 summary: Bug 537873, Bug 514574: Have strict mode code report TypeErrors for assignments, deletions. r=brendan
Probably from that ObjectOps::setProperty changeset.
Blocks: 537873, 514574
Status: UNCONFIRMED → NEW
blocking2.0: --- → ?
Ever confirmed: true
Keywords: regression
Depends on: 614070
blocking2.0: ? → betaN+
No longer depends on: 614070
Shorter: var a = Object.create(Array.prototype); a.push(3); assertEq(a.length, 1); For some reason the bug only happens if the prototype is a sparse array. If it's dense, the behavior is correct.
Assignee: general → bhackett1024
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → DUPLICATE
No longer blocks: 537873
Blocks: 537873
You need to log in before you can comment on or make changes to this bug.