[Issue 10078] New: std.string.indexOf(Char[], dchar, CaseSensitive) fails at compile time

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon May 13 16:44:18 PDT 2013


http://d.puremagic.com/issues/show_bug.cgi?id=10078

           Summary: std.string.indexOf(Char[], dchar, CaseSensitive) fails
                    at compile time
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: nobody at puremagic.com
        ReportedBy: michael at overuse.org


--- Comment #0 from Mike Houston <michael at overuse.org> 2013-05-13 16:44:16 PDT ---
Created an attachment (id=1213)
Patch to indexOf to avoid calling memchr

DMD 2.062
OS X

If the std.string.indexOf(Char[], dchar, CaseSensitive) method is called at
compile time with an ASCII dchar, it will fail:

/usr/share/dmd/src/phobos/std/string.d(345): Error: memchr cannot be
interpreted at compile time, because it has no available source code

Test case:

import std.stdio;
import std.string;

int index = indexOf("xyz", cast(dchar) 'x'); // Fails compile
int index1 = indexOf("xyz", cast(dstring) "x"); // Succeeds

void main() {

    writeln("indexOf(\"xyz\", \"x\") = ", index);

}

Patch:

I've modified the string.d implementation to avoid calling memchr. In that
branch of the code, I have inserted a modified version of the case-insensitive
version of the search loop.

Diff file attached against the source included in the 2.0.62 distribution.

Regards,
Mike.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list