Hello Rustics,

Per recent discussions, I would very much like to remove code related to typestate. It seems that the current approach is not scaling up to real problems. There has been some discussion about alternative, lighterweight approaches. I am not opposed to such forward motion. However, the current code is holding me back from landing an improvement to region inference—and I have to choose now whether to refactor it or remove it. Given that we expect the system to change significantly and therefore that the current code will not be especially useful, I would prefer to remove it.

In particular the problem centers around the checking and treatment of function preconditions. These are not currently represented as expressions but rather a special, more limited predicate form. They don't have node ids. Type checking then synthesizes expressions and creates node ids. The region code then gets confused because it relies on node ids as names for scopes and other things, and these synthesized node ids don't appear in the AST nor in the various tables based on the AST (they are, after all, synthesized).

As I said, there are various ways to repair this situation, but given that the code is on life support, I'd rather not expend energy fixing it. My plan for removal would be to convert all remaining function preconditions into assertions. Last time I discussed this on IRC, Graydon objected I think because he was concerned that there were checks that were being relied upon but which would not be lost. I am not sure if converting existing checks into assertions assuages those concerns.


Niko
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to