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.

Reply via email to