On Mon, 18 May 2015 14:41:19 +0000, Chris wrote:

> On Monday, 18 May 2015 at 14:34:38 UTC, ketmar wrote:
>> On Mon, 18 May 2015 14:30:42 +0000, Chris wrote:
>>
>>> The following
>>> 
>>> string[string] myarray = ["key":"value"];
>>> string entry;
>>> entry = myarray["key"]; // => vgc: indexing an associative array may
>>> cause GC allocation
>>> 
>>> Why is _accessing_ an assoc treated as indexing it?
>>
>> it can throw "out of range" error, which is `new`ed.
> 
> But shouldn't it read "accessing an associative array may cause GC
> allocation"?

not any access may cause allocation. `auto e = "key" in myarray;` will 
not allocate, for example. yet it's still accessing the array. it's 
*indexing* which may end in allocation.

> And maybe a hint to the exception that may be thrown.
i believe that such explanation is a work for lint-like tool. burden 
compiler with special cases can lead too far. ;-)

> It's not the same as
> 
> myarray["key1] = "some value";
> myarray["key2] = "some other value";
> 
> A bit confusing.

yes, it requires some knowledge of language and libraries. "-vgc" is not 
a linter, though, it was made with some assumptions about user's 
knowledge.

yet you can open ER in bugzilla, maybe DMD developers will implement it. 
i'm not a developer, and i can be wrong in reasons behind "-vgc".

Attachment: signature.asc
Description: PGP signature

Reply via email to