http://d.puremagic.com/issues/show_bug.cgi?id=8329
--- Comment #1 from Kenji Hara <k.hara...@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: -------