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.