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