On 10/22/2015 6:31 PM, tsbockman wrote:
So, this leads to the question: is making use of dchar values greater than
dchar.max considered undefined behaviour, or not?

1. If it is UB, then there is quite a lot of D code (including std.uni) which
must be corrected to use uint instead of dchar when dealing with values which
could possibly fall outside the officially supported range.

2. If it is not UB, then the compiler needs to be updated to stop assuming that
dchar values greater than dchar.max are impossible. This basically just means
removing some of dchar's special treatment, and running it through more of the
same code paths as uint.

I think that ship has sailed. Illegal values in a dchar are not UB. Making it UB would result in surprising behavior which you've noted. Also, this segues into what to do about string, wstring, and dstring with invalid sequences in them. Currently, functions defined what they do with invalid sequences. Making it UB would be a burden to programmers.

Reply via email to