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