I just picked up some of my old code that was working when I last used it (approximately 6 months ago) but now is no longer working. I thought it was due to using an updated compiler, so I have installed many old compilers in and attempt to make it work, but no luck. Using DVM I have tried 2.077.0, 2.078.0, 2.079.0, 2.087.0, 2.088.0, and I think I was using 2.079.0 at the time, but none of these have worked. The actual issue is:

/home/jamie/.dvm/compilers/dmd-2.077.0/linux/bin/../../src/phobos/std/math.d(3702):
 Error: fmodl cannot be interpreted at compile time, because it has no 
available source code
called from here: called from here: fmod(cast(real)to(n), cast(real)to(2))

and

/home/jamie/.dvm/compilers/dmd-2.077.0/linux/bin/../../src/druntime/import/object.d(3067):
 Error: _d_arraysetcapacity cannot be interpreted at compile time, because it 
has no available source code
called from here: reserve(i_n, 1LU << cast(int)((p + 1LU) * 1LU))

I've looked in the directory it provides and as far as I can tell the code does exist. I.e. in std.math:
real fmod(real x, real y) @trusted nothrow @nogc
{
    version (CRuntime_Microsoft)
    {
        return x % y;
    }
    else
        return core.stdc.math.fmodl(x, y);
}

and in core.stdc.math:
   ///
    double  fmod(double x, double y);
    ///
    float   fmodf(float x, float y);
    ///
extern(D) real fmodl()(real x, real y) { return fmod(cast(double) x, cast(double) y); }

Thanks

Reply via email to