a-mir-formality
a-mir-formality copied to clipboard
a model of MIR and the Rust type/trait system
Reading the code with @lcnr and @compiler-errors we found that... * the "occurs check" in the inference code is overly simplistic when it comes to aliases * see also rust-lang/trait-system-refactor-initiative#8...
`prove_normalize` does not consider the possibility of a downstream candidate. If the trait ref may be external it can introduce an inference variable or perhaps return `None` or something.
I realised (almost?) all of the recursive enums that has the pattern below are using ``Arc`` ```rust enum Bar { Foo(Arc) } ``` I am not sure if it is...
This branch implements a "first draft" of the borrow checker. It's definitely incomplete (doesn't check moves, for example) but it is detecting basic failures. The branch ALSO does a bunch...
Currently we are just adding where-clauses to tests to reflect implied bounds and outlives relations. We should decide how we want to handle this. Example: ```rust #[test] fn lifetime() {...
As per the comment here: https://github.com/rust-lang/a-mir-formality/pull/200#discussion_r2281486848 We should also rename ``prove_normalize`` to ``normalize_alias`` at the same time.
See this comment by @tiif https://github.com/rust-lang/a-mir-formality/pull/195#discussion_r2239856966