You rightly noted that this problem is worthy of high attention. And it really is now in the Top 5 of our priorities. In fact, directly or indirectly, we are working on this in four directions:
1. Move to the new infrastructure (
KT-42308). Some of the Exceptions are related to shortcomings in the integration between the plugin and the IJ platform. In the new infrastructure, such problems will either be easier to fix, or they will not appear at all.
2. We recognized the importance of the problem around 1.3.50 release. We began to devote more time to it, and the dynamics of Exceptions (according to the data of anonymous statistics) is reduced by 1.5 times per release (1.3.6, 1.3.7 ...).
3. It’s not distinguishable for a user, but some of the Exceptions that you see in the IDE actually happen in the compiler. Recently, the IDE and Compiler teams have started working together on exception reports to raise the effectiveness of fixes delivery.
4. Prototype IDE plugin with the new compiler frontend (
KT-42307). I suppose you meant this task by saying “compiler rewrite”? As you rightly pointed out, some problems have been showing up for a long time. Sometimes fixing them requires tricky architectural changes and it finally leads to the accumulation of tech. debt. Rewriting plugin modules for the new compiler takes into account these accumulated old problems, and in the new implementation, many of them simply will not exist. This is something like resetting that debt.
Therefore, the issue of Exceptions and plugin stability is recognized and stays among our highest priorities. Thank you for bringing this up!