Hacker News new | ask | show | jobs
by nextaccountic 975 days ago
> The overall goal would be to figure out classical error conditions like nill pointers deference.

> If I can figure out if a pointer will be nil in some execution branch, there is no reason why a computer cannot do the same.

Note, this is called flow-sensitive typing (also called type narrowing) and I think that typescript does it.

https://en.wikipedia.org/wiki/Flow-sensitive_typing

> I personally would see this as an human race level upgrades. Imagine feeding your code to a CI that spit back something like: "you will have a panic at line 156 when your input is > 4"

A model checker can do that!

See this

https://model-checking.github.io/kani/tutorial-kinds-of-fail...

Other techniques are also possible

https://github.com/viperproject/prusti-dev#quick-example

(Here I could link a lot of things, I just selected two Rust projects to illustrate)

This works better if you are able to provide contracts in your API that says which guarantees you provide. Alternatively, asserts are useful too.