We are building a verification tool for Rust, implementing it as a compiler plugin (driver).
We need to access the information computed by a lot of passes (among which the borrow checker, the drop checker, l-values…). Looking at the code of the compiler it seems that those information are often hidden from outside the crates.
For this reason, we plan to depend on a patched version of the compiler, in which we add some
pub where required.
I saw that this is the approach used by the Borrow visualizer prototype (https://github.com/Nashenas88/borrow_visualizer_prototype). However, we would like to avoid the overhead of maintaining our fork of the compiler with a patch on top of it.
What do you think? Do you see an easier solution? Could we perhaps hope to push (some of) our patches to the compiler?