www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - BetterC + startsWith

reply SrMordred <patric.dexheimer gmail.com> writes:
//-betterC
import core.stdc.stdio;
import std.algorithm;

void main(){
     printf( "%d\n",startsWith("a","b") );
}

//Fails to compile with betterC, dmd/ldc2 last versions.

Any reason for not work with betterC or should i file the issue ?
(Find this on a bindbc lib, so i think that it may have worked 
previously)
Feb 21 2020
parent reply Paul Backus <snarwin gmail.com> writes:
On Saturday, 22 February 2020 at 02:01:25 UTC, SrMordred wrote:
 //-betterC
 import core.stdc.stdio;
 import std.algorithm;

 void main(){
     printf( "%d\n",startsWith("a","b") );
 }

 //Fails to compile with betterC, dmd/ldc2 last versions.

 Any reason for not work with betterC or should i file the issue 
 ?
 (Find this on a bindbc lib, so i think that it may have worked 
 previously)
The issue is that strings aren't input ranges in betterC [1], due to autodecoding. Normally you'd work around this using std.utf.byCodeUnit, but that's currently broken, because std.utf attempts to import core.exception.UnicodeException from druntime at module scope [2], causing any betterC program that imports std.utf to fail compilation. So, for now, I think the best you can do is probably to copy-paste byCodeUnit into its own source file, and use that until std.utf is fixed. [1] https://issues.dlang.org/show_bug.cgi?id=20139 [2] https://github.com/dlang/phobos/blob/7a656e09d23507d0c404dabaa2c440a45e7c753d/std/utf.d#L65
Feb 21 2020
parent SrMordred <patric.dexheimer gmail.com> writes:
 The issue is that strings aren't input ranges in betterC [1], 
 due to autodecoding.

 Normally you'd work around this using std.utf.byCodeUnit, but 
 that's currently broken, because std.utf attempts to import 
 core.exception.UnicodeException from druntime at module scope 
 [2], causing any betterC program that imports std.utf to fail 
 compilation.

 So, for now, I think the best you can do is probably to 
 copy-paste byCodeUnit into its own source file, and use that 
 until std.utf is fixed.

 [1] https://issues.dlang.org/show_bug.cgi?id=20139
 [2] 
 https://github.com/dlang/phobos/blob/7a656e09d23507d0c404dabaa2c440a45e7c753d/std/utf.d#L65
Oh right, thanks! Its the third time that autodecoding bite me in betterC and i always forgot of the possibility.
Feb 21 2020