Hello Ary,
BTW, I had to debug inside Descent's code to find this. If I debug it using the debugger I'm programming, I can see it stops the execution right at the "s.a[i] = m;" line, without saying why (DMD doesn't say why). It's not much, but I think it's better than "Can't evaluate at compile-time", and might give you more clues about it. :-)
DMD feature request?