On Saturday, 12 September 2015 at 20:05:28 UTC, rcorre wrote:
After upgrading from DMD 2.068.0-1 to DMD 2.068.1-1, my project began producing a large linker error (when built using dub).

I was able to trace it down to a single line:

target = target.adjacent(Diagonals.yes).randomSample(1).front;

target is of type RowCol (https://github.com/rcorre/dtiled/blob/master/src/dtiled/coords.d#L36), which has an `adjacent` property that leverages chain, only, and take.

When I comment this line out (or build on a system with DMD 2.068.0-1), I can build fine. When uncommented, I see (post ddemangle):

http://dpaste.com/1PJB35V

I've tried to break this down into a reduced example to prove that I can call randomSample on the range returned by RowCol.adjacent (http://dpaste.com/13G9WDE). This runs fine, so it seems to be a deeper issue with my build environment (full project at https://github.com/rcorre/damage_control if you're curious).

I don't want to turn this into "please debug my project for me", but do people have general hints on how to track down issues like this?

Thanks!

Side note: I see src/transition.d in the output, but I don't see how it is relevant to the error (it isn't even imported by the file causing the error).

there was talk of adding symbol name compression some time ago ( to reduce lib size ( and maybe make ddemangle not fail on long syms?). This might be the cause of your problems i.e. the new compiler emitting references to compressed names but built with the old compiler using the not compressed ones. Try rebuilding everything and see if that fixes it.

Reply via email to