Feature Request: Hashed Based Assertion

qznc via Digitalmars-d digitalmars-d at puremagic.com
Fri Nov 27 13:30:08 PST 2015


On Friday, 27 November 2015 at 20:19:40 UTC, tcak wrote:
> if(1) doSomething();
> if(1) { doSomething(); }
>
> You are correct here about hash calculation, but unless someone 
> touches to codes, this never happens, and no hash changes would 
> be seen. If someone is touching it as you exampled, checking 
> the documentation about what has happened would be the correct 
> approach. Importance of behaviour change is perceptional, 
> computer cannot know that already.

If you really want to integrate this into the language, you 
should consider future improvements.

Hashing the tokens is a conservative approximation of "behavior 
change", as the example above shows. Another example would be 
variable renames. The specification of the hash algorithm should 
provide the freedom that both variants above get the same hash, 
but still be correct in the sense that different behavior always 
yields different hashes.

Overall, I'm not convinced that this needs to be a language 
extension or trait. It could simple a static analysis tool 
independent of the compiler.


More information about the Digitalmars-d mailing list