On Tuesday, 23 July 2013 at 12:26:31 UTC, JS wrote:
http://dpaste.dzfl.pl/27ca3fbd

The code compiles fine on my computer. On DPaste there is all kinds of errors(when fixing one other errors pop up.

I am compiling to 32-bit binary and that is the only real difference I can see, but surely it wouldn't result in such errors?

The first error:

/d547/f451.d(227): Error: unterminated character constant
/d547/f451.d(227): Error: unterminated character constant
/d547/f451.d(227): Error: found '41U' when expecting ')'

makes no sense as far as I can tell unless my expand code generation templates are messed up.

If someone wouldn't mind trying to compile the code and see if the errors are similar to dpaste I'd appreciate it. (I don't want to end up writing code that is very bad(even though this is just proof of concept code) and will end up breaking)

I'm getting some compile errors, because you are trying to cram a size_t into a int:

hello.d(179): Error: cannot implicitly convert expression (s.length - 1LU) of type ulong to int if (s[max(0, j - d[0].length + 1)..s.length] == d[0]) { maxL = max(maxL, d[0].length); } if (s[max(0, j - d[1].length + 1)..s.length] == d[1]) { maxL = max(maxL, d[1].length); } if (s[max(0, j - d[2].length + 1)..s.length] == d[2]) { maxL = max(maxL, d[2].length); }

hello.d(182): Error: cannot implicitly convert expression (max(maxL, _param_1.length)) of type ulong to int hello.d(183): Error: cannot implicitly convert expression (max(maxL, _param_2.length)) of type ulong to int hello.d(184): Error: cannot implicitly convert expression (max(maxL, _param_3.length)) of type ulong to int hello.d(192): Error: template instance hello.stripRight!(string, string, string) error instantiating hello.d(237): instantiated from here: strip!(string, string, string) if (s[j..min(s.length, j + d[0].length)] == d[0]) { maxL = max(maxL, d[0].length); } if (s[j..min(s.length, j + d[1].length)] == d[1]) { maxL = max(maxL, d[1].length); } if (s[j..min(s.length, j + d[2].length)] == d[2]) { maxL = max(maxL, d[2].length); }

hello.d(166): Error: cannot implicitly convert expression (max(maxL, _param_1.length)) of type ulong to int hello.d(167): Error: cannot implicitly convert expression (max(maxL, _param_2.length)) of type ulong to int hello.d(168): Error: cannot implicitly convert expression (max(maxL, _param_3.length)) of type ulong to int hello.d(192): Error: template instance hello.stripLeft!(string, string, string) error instantiating hello.d(237): instantiated from here: strip!(string, string, string) hello.d(237): Error: template instance hello.strip!(string, string, string) error instantiating if (s[j..min(s.length, j + d[0].length)] == d[0]) { maxL = max(maxL, d[0].length); } if (s[j..min(s.length, j + d[1].length)] == d[1]) { maxL = max(maxL, d[1].length); }

hello.d(128): Error: cannot implicitly convert expression (max(maxL, _param_1.length)) of type ulong to int hello.d(129): Error: cannot implicitly convert expression (max(maxL, _param_2.length)) of type ulong to int hello.d(238): Error: template instance hello.split!(string, string) error instantiating hello.d(179): Error: cannot implicitly convert expression (s.length - 1LU) of type ulong to int
if (s[j] == d[0]) { maxL = max(maxL, 1); }

hello.d(175): Error: template instance hello.stripRight!(char) error instantiating
hello.d(239):        instantiated from here: stripRight!()
hello.d(239): Error: template instance hello.stripRight!() error instantiating
if (s[j..min(s.length, j + d[0].length)] == d[0]) { return j; }
if (s[j..min(s.length, j + d[1].length)] == d[1]) { return j; }

Once you change those, the program compiles (on my machine anyways).

Running it produces strange output though:
Compilation:
if (s[max(0, j - d[0].length + 1)..s.length] == d[0]) { maxL = max(maxL, d[0].length); } if (s[max(0, j - d[1].length + 1)..s.length] == d[1]) { maxL = max(maxL, d[1].length); } if (s[max(0, j - d[2].length + 1)..s.length] == d[2]) { maxL = max(maxL, d[2].length); }

if (s[j..min(s.length, j + d[0].length)] == d[0]) { maxL = max(maxL, d[0].length); } if (s[j..min(s.length, j + d[1].length)] == d[1]) { maxL = max(maxL, d[1].length); } if (s[j..min(s.length, j + d[2].length)] == d[2]) { maxL = max(maxL, d[2].length); }

if (s[j..min(s.length, j + d[0].length)] == d[0]) { maxL = max(maxL, d[0].length); } if (s[j..min(s.length, j + d[1].length)] == d[1]) { maxL = max(maxL, d[1].length); }

if (s[j] == d[0]) { maxL = max(maxL, 1); }

if (s[j..min(s.length, j + d[0].length)] == d[0]) { return j; }
if (s[j..min(s.length, j + d[1].length)] == d[1]) { return j; }

Run:
acdb99:{9acdb99
db99:{9acdb9
acdb99
9acdb99
        aaaaa
        a
        b
        c

Reply via email to