Adam Ruppe: > The way I solved it was to sprinkle > assert( var !is null ); > before I start using or storing the thing, and in the contracts to the > functions.
Yes, contracts reduce this problem a lot. Recently here I have shown a paper about this topic. ----------------- Jonathan M Davis: >There are quite a few people who want Walter to put in null checks in at least >debug mode, but he's against it and no one has been able to convince him.< I think that Walter is right here, adding tons of null checks in debug mode helps a bit (stack traces are good), but it's just a rough patch on the problem, but it's not a good solution of it. In my opinion a better solution to this problem is to: 1) Introduce nonnullable pointers/references, to denote them I have proposed a leading @. 2) Require explicit tests every time a nullable pointers/references is about to be deferenced (and then after this test in the else branch the reference type "becomes" a nonnullable one. This is an application of the idea of "TypeState", used by the Mozilla Rust language. The type doesn't actually change, it's just its state that changes...). Bye, bearophile