Issue #5124 has been updated by Nobuyoshi Nakada.

Category set to core
Status changed from Open to Assigned
Assignee set to Koichi Sasada
Target version set to 1.9.3

It's easy to fix that splatarray always makes a new array, but I'm uncertain of its flag.
----------------------------------------
Bug #5124: foo = [*bar] implies foo.equal?(bar)
http://redmine.ruby-lang.org/issues/5124

Author: Michael Edgar
Status: Assigned
Priority: Normal
Assignee: Koichi Sasada
Category: core
Target version: 1.9.3
ruby -v: ruby 1.9.2p188 (2011-03-28 revision 31204) [x86_64-darwin10.7.0]


I just ran into this as a result of some slightly sloppy coding, but it did disagree with my internal assumptions.

Normally, I expect the Array literal syntax to create a new object, every time. So when I rewrote some code and ended up with something similar to the following, my tests broke, and I'm not sure that's how it should be. Here's the reduced test case:

some_ary = [1, 2, 3]
bar = [*some_ary]
bar << 4

p bar
>> [1, 2, 3, 4]
p some_ary
>> [1, 2, 3, 4]

I see it's clearly taking an opportunity for optimization, so I'm more than happy to hear that as a reason for rejecting this. It does warrant documentation somewhere, though, I'd say. Not sure where that documentation would go.


-- 
http://redmine.ruby-lang.org