Phobos' std.conv.text functions

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Mon Aug 31 10:40:24 PDT 2015


On 08/31/2015 05:35 PM, H. S. Teoh via Digitalmars-d wrote:
> On Mon, Aug 31, 2015 at 03:15:07PM +0000, via Digitalmars-d wrote:
>> I have been bitten by the std.conv.text family of functions twice now
>> and while it's not a major issue, I think it still an issue that is
>> worth fixing and perhaps prevent similar issues in the future.
>>
>> First time I got bitten was because of local imports shadowing local
>> symbols without error or at least a warning.
>>
>> auto stuff(string text) {
>>    import std.conv;
>>
>>    foreach(ch; text.byDchar) {
>>    }
>> }
>
> https://issues.dlang.org/show_bug.cgi?id=10378
>
> Kenji has a pull for this, let's hope it goes through.
>
>
> T
>

Of course it is better than the status quo, but if it does, the bug 
report should stay open, and/or a few new ones should be filed. The pull 
ignores the discussion about what would be a good design and implements 
the rather awkward semantics that are quickest to hack into the compiler 
instead.

Also, the proposed rewrite does not fix the problem. (I haven't tested 
it, but AFAIU, the following code is neither rejected by the pull, nor 
does it print "123".)

import std.stdio;

void main(){
     string text="123";
     void foo(){
         import std.conv;
         writeln(text());
     }
     foo();
}


(Also, essentially the same logic occurs in three distinct places in the 
new code.)


More information about the Digitalmars-d mailing list