diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java index a4eaa3488a78..d2622a9fa5a8 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java @@ -851,7 +851,6 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzerEx implements Pers } if (HeavyProcessLatch.INSTANCE.isRunning()) { final Disposable removeListenerDisposable = Disposer.newDisposable(); - Disposer.register(DaemonCodeAnalyzerImpl.this, removeListenerDisposable); // wait for heavy processing to stop, re-schedule daemon but not too soon HeavyProcessLatch.HeavyProcessListener heavyProcessListener = new HeavyProcessLatch.HeavyProcessListener() { @Override @@ -865,6 +864,8 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzerEx implements Pers } }; HeavyProcessLatch.INSTANCE.addListener(removeListenerDisposable, heavyProcessListener); + Disposer.register(DaemonCodeAnalyzerImpl.this, removeListenerDisposable); + if (!HeavyProcessLatch.INSTANCE.isRunning()) { // in case heavy operation finished right before listener added heavyProcessListener.processFinished();