On 21 February 2014 01:20, Steven Schveighoffer <schveiguy@yahoo.com> wrote:
On Thu, 20 Feb 2014 10:13:27 -0500, Daniel Murphy <yebbliesnospam@gmail.com> wrote:

"Steven Schveighoffer"  wrote in message news:op.xbk44onleav7ka@stevens-macbook-pro.local...

What I really would be curious about is if in most D code, you see a lot more default: break; than default: assert(0);

I just did a quick git-grep on the compiler source (not D, but all switches do have a default thanks to the d port)

With 707 "default:"s 68 had a break on either the same or next line, and 249 had an assert(0).

On phobos I get 22 assert(0)s vs 10 breaks with 147 defaults

With druntime i get 24 assert(0)s + 5 error();s vs 11 breaks with 64 defaults.

Good data, but I was more thinking of people who use D, not the core language. The core language's developers have different behaviors than standard users. I'm not dismissing this data, but I would like to see more application statistics.

In my little app:
 17 default: break;
 1 default: assert(0); ... and I just realised it should have been a final switch() anyway... so now there's 0.

I haven't just been lazy, the default case just happens to be as if an unhandled else in many cases.

Another interesting data point would be whether any of those asserts were inserted after the language deprecated missing defaults, or if they existed beforehand.

One thing that is nice is how asserts are supported in D. It makes this a much easier decision.

-Steve