--- Comment #1 from Kenji Hara <> 2012-06-30 22:22:23 PDT ---
(In reply to comment #0)
> This code fails to compile:
> import std.stdio;
> void main() nothrow
> {
>     foreach(dchar c; "hello world")
>     {}
> }
> giving the error
> q.d(5): Error: _aApplycd1 is not nothrow
> q.d(3): Error: function D main 'main' is nothrow yet may throw
> if the dchar is removed, then it compiles just fine. Clearly, there's an issue
> with the apply function which implements iterating over strings as characters
> other than the character type of the string, since this really should be
> nothrow, but it's not.

I think it should not be nothrow. Iterating string(== immutable(char)[]) as a
range of dchar runs decoding of UTF-8, and if given string has invalid UTF-8
sequence, it should throw UnicodeException (it's declared in core.exception).

On the other hand, such a transcoding iteration should be pure and @safe. It's
enough worth.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to