On Saturday, 3 September 2016 at 22:48:27 UTC, Walter Bright wrote:
On 9/3/2016 6:20 AM, Adam D. Ruppe wrote:
On Saturday, 3 September 2016 at 12:12:34 UTC, Walter Bright wrote:
Except that asserts are checking for compiler bugs, not diagnostics on user code.

Except that in the real world, it is an irrelevant distinction because you have stuff to do and can't afford to wait on the compiler team to actually fix the bug.

If nothing else, you'd like to know where it is so you can hack around the bug
by changing your implementation.

Users are not equipped to do that, and we shouldn't raise false expectations that they can. Developers who are equipped to that are able and willing to build the compiler from source with debugging turned on.

Really, what possible use is there to an end user for an assert that unhelpfully printed out a message that the register allocator failed? There's nothing "user friendly" about a such a message.


I understand if you want to say producing better error messages in the compiler is a pain and you have other priorities, but surely you accept that they are
valuable for this reason if nothing else.

No, I do not accept that, and I've had no trouble working around asserts I've gotten from other vendors' compilers, despite there being no message other than the compiler failed.

Most of the time it's the last change made that triggered it. Back up one change and do something different.

In my experience getting a clue as to what is was the compiler didn't like is very useful. Often the only way I can find a workaround is by locating the assert in the compiler source and working out what it might possibly be to do with, then making informed guesses about what semi-equivalent code I can write that will avoid the bug.

If the assert just had a little more info, it might save me a fair amount of time.

Reply via email to