Just practically speaking, not being able to call any non-pure functions is real pain. You can't even call to!string for example. I like your original suggestion, thanks for putting it it in bugzilla. I hope it will considered some day. By the way, I just discovered contract programming is amazingly cool in D right now and also very buggy.