Am 20.12.2013 16:56, schrieb Øivind Loe:> Hi,

After upgrading to DMD 2.064.2 and vibed 0.7.16 (also tried master), I am unable to build my app. I build vibe in a seperate step, generating a .o file, which I link to the rest of the application. Only unittest build fails!

If I pass -unittest to both generation of vibe and my app before linking, I get the following compile errors:

(...)

See #332. It should already be fixed on DMD master and will supposedly be included in the next beta.

If I however don't pass -unittest to build of vibe, which is how I did it previously, I get the following linker errors

(...)

You could try to comment out the version(unittest) block in vibe.core.concurrency, line 1129-1140 in GIT master, but there may be more places where this issue occurs. Unfortunately this is a general issue for building different D libraries with different build flags. With careful code authoring it's possible to avoid the issue in case of "-unittest", but the risk is always there.

If removing the block works, could you also try to replace it with:

unittest {
	static class CLS {}
	static assert(is(typeof(send(Tid.init, makeIsolated!CLS()))));
	static assert(is(typeof(send(Tid.init, 1))));
	static assert(is(typeof(send(Tid.init, 1, "str", makeIsolated!CLS()))));
	static assert(!is(typeof(send(Tid.init, new CLS))));
	static assert(is(typeof(receive((Isolated!CLS){}))));
	static assert(is(typeof(receive((int){}))));
	static assert(is(typeof(receive!(void delegate(int, string, Isolated!CLS))((int, string, Isolated!CLS){}))));
	static assert(!is(typeof(receive((CLS){}))));
}

? If that works, I'd commit it to master.