On 9/3/2016 3:57 AM, Ethan Watson wrote:
Browsing through that function, I can also see another assert that doesn't let
you use vector types unless you're running a 64-bit build or are on OSX. It
doesn't tell me that through an error message. I had to look at the source code
to work it out. fatal_error("Vector types unavailable on the target platform");
and someone's day was made better. And then a couple of lines above that,
another assert(0). fatal_error("Invalid vector type %s", tx->toChars()); and
someone can deal with the unexpected.

This appears to conflate diagnosing errors in the user's source code with detecting bugs in the compiler. A user source code error should have been diagnosed long before those asserts are hit (and if not, it's a compiler bug, by definition, not a user source code problem).


If I have to open up the compiler's source to get an idea of what I'm doing
wrong, that's a bad user experience. And why I want a discussion about this. Not
to whinge, not to get a bug fix. But to highlight that assert(0) is a bad
pattern and there should be a discussion about changing the usage of asserts
inside DMD.

Except that asserts are checking for compiler bugs, not diagnostics on user code. I don't expect users to debug the compiler - if they get an assert they should file a bug report to bugzilla and let us debug the compiler and fix it.

----

Aside: we regularly have threads here where the difference between detecting programming bugs and detecting input errors is discussed. I fear another one is gathering steam, and if so, I'll likely not participate in it.

Reply via email to