On 7/12/2011 7:35 PM, Trass3r wrote:
Am 13.07.2011, 01:24 Uhr, schrieb Johann MacDonagh
<johann.macdonagh....@spam..gmail.com>:

On 7/12/2011 7:17 PM, Andrej Mitrovic wrote:
I don't understand what strip() could be doing to break CTFE anyway?

I believe a lot of the std.string functionality was modified to use
routines in druntime in this latest release. The default sc.ini links
to a static druntime lib as opposed to compiling the source. That
means CTFE won't have the source for, in strip's example, _aApplycd2
(rt/aApply.d in druntime). Fixing this (and adding in support for
std.intrinsic) should fix a ton of bugs where a "small" change in
Phobos kills CTFE.

That's true. I had several of these "no source available" errors.

Though I think toUpper crashed at:

S toUpper(S)(S s) @trusted pure
if(isSomeString!S)
{
foreach (i, dchar cOuter; s) <---
{

That's exactly the issue. When the compiler hits a foreach over a string that wants to convert its character type to another, it has to insert special magic to make that work (UTF decoding, etc...). Clearly this stuff shouldn't be in phobos, so it's in druntime. Unfortunately, the compiler doesn't have access to druntime source by default.

I'm not sure how it was doing it before. This worked in 2.053.

Reply via email to