So what can we do with this? If you develop a compiler, it is always very annoying that any change that you do actually breaks the compiler if you do it wrong. Larger changes over multiple methods get quite hard to do.
One thing that we will soon have is the ���accept for test��� feature that I posted recently.
Another idea is to use the #bindings: feature of the compiler.
I did small experiment, I added this method to the OpalCompiler class on the class side:
���..
And after that, you can put a #halt deep in the compiler (or do some change that needs multiple steps), yet compilation will not be affected.
Most tests (not all) are writing in a way that they use classes from the package directly (they do not go via the global #compilerClass setting).
So this means that one can now change the compiler as much as one wants, test it by running tests and then be quite sure that it will not break anything.
Shortcomings:
-> extensions are not treated, only the main package
-> Not used much, for sure needs testing to see if this really works.
-> Can we get rid of the #CompilerOverlay global?
I made a pull request: