dmd 2.057 release
    Sean Kelly 
    sean at invisibleduck.org
       
    Wed Dec 14 09:14:00 PST 2011
    
    
  
Ideally, every nontrivial change should have a bugzilla entry, even if that means its created by whoever made the change. It's too easy to miss things otherwise. 
Sent from my iPhone
On Dec 14, 2011, at 3:11 AM, Jacob Carlborg <doob at me.com> wrote:
> On 2011-12-14 11:10, Walter Bright wrote:
>> On 12/14/2011 1:59 AM, Jacob Carlborg wrote:
>>> What happened to arrays in this release:
>>> 
>>> void foo (Object[] a) {}
>>> class Foo {}
>>> 
>>> void main ()
>>> {
>>> Foo[] b;
>>> foo(b);
>>> }
>>> 
>>> The above code fails with the following message:
>>> 
>>> main.d(54): Error: function main.foo (Object[] a) is not callable
>>> using argument
>>> types (Foo[])
>>> main.d(54): Error: cannot implicitly convert expression (b) of type
>>> Foo[] to
>>> Object[]
>>> 
>>> Have I missed something, I can't find this in the changelog?
>> 
>> I don't remember if there was a bugzilla entry for it, but it's the
>> object slicing problem. The thing is, main() expects b to be an array of
>> Foo's. If foo() replaces one of the array elements with an Object, then
>> b is no longer an array of Foo's, and can crash.
> 
> I think it would be good if it's in the changelog, even if there is no bugzilla entry for it.
> 
>> Note that if you write foo as:
>> 
>> void foo(const(Object)[] a)
>> 
>> it will work.
> 
> Ok, thanks.
> 
> -- 
> /Jacob Carlborg
    
    
More information about the Digitalmars-d-announce
mailing list