Thread overview
spiritd, bug fix.
May 22, 2010
div0
Jul 05, 2010
Richard Webb
Jul 06, 2010
div0
Jul 06, 2010
Richard Webb
May 22, 2010
A new release to fix a bug with the lexemeD directive which would cause space skipping to fail in certain circumstances:

http://www.sstk.co.uk/spiritd.php

- --
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk
July 05, 2010
Hi,

I just tried to build the spiritd test app with the current DMD2, and got the error:

spiritd\primitives.d(46): Error: template instance conv!(Match!(char)) matches
more than one template declaration, spiritd\match.d(70):conv(T) and
spiritd\match.d(71):conv(T)

Is the current D2 supposed to be supported?

Thanks,
Richard Webb
July 06, 2010
On 05/07/2010 13:54, Richard Webb wrote:
> Hi,
>
> I just tried to build the spiritd test app with the current DMD2, and got the error:
>
> spiritd\primitives.d(46): Error: template instance conv!(Match!(char)) matches
> more than one template declaration, spiritd\match.d(70):conv(T) and
> spiritd\match.d(71):conv(T)
>
> Is the current D2 supposed to be supported?
>
> Thanks,
> Richard Webb

It works in D2 up to and including 2.036.

2.037 it doesn't work, it looks like a compiler bug was introduced.
The change log for that version doesn't even mention templates

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

-- 
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk
July 06, 2010
fwiw, i tried to work around this by changing the second conv function to:

      T conv(T, U)(in Match!(U) arg) { return T(arg._len); }

and then got a bunch of errors like:

    spiritd\impl\parse.d(36): Error: variable m cannot be read at compile time

Which looks like bug 3809.
If i change parseImpl to initialize 't' manually rather than using the struct
initializer, then the test app compiles and appears to work ok.