On Friday 04 February 2011 04:40:35 bearophile wrote: > > So moving them into explicit little features makes the language more > > The two little features I am talking about are: > - a halt() somewhere like in core.bitop or std.intrinsic or the default > object module to replace assert(0); - And to use > class_instance.invariant() to replace assert(class_instance).
assert(0) has the advantage of being a normal assertion in non-release mode. It also makes it clear that that code path should _never_ be reached. I don't think that halt would be as clear in that regard and it _certainly_ wouldn't imply that it would be a normal assert in non-release mode. We'd then have problems with halt not actually being halt in non-release mode... I'm _definitely_ against changing assert(0). The real question though is whether you can convince Walter (which I doubt, but I don't know). Still, making such a change _would_ contradict TDPL, which is supposed to be a major no-no at this point. - Jonathan M Davis