[Issue 8329] foreach over string with dchar as element isn't nothrow
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Jun 30 22:19:47 PDT 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8329
--- Comment #1 from Kenji Hara <k.hara.pg at gmail.com> 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: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list