From 9dfe399bf1a26f649b8c0fbc39ea8ec3714a248d Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Tue, 24 Dec 2013 20:58:07 +0400 Subject: [PATCH] Fix infinite analyze in Java files after opening Kotlin view in Kotlin file --- .../jet/plugin/util/InfinitePeriodicalTask.java | 6 +++++- .../jetbrains/jet/plugin/util/LongRunningReadTask.java | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/util/InfinitePeriodicalTask.java b/idea/src/org/jetbrains/jet/plugin/util/InfinitePeriodicalTask.java index 43a146d505a..50233e0a1f2 100644 --- a/idea/src/org/jetbrains/jet/plugin/util/InfinitePeriodicalTask.java +++ b/idea/src/org/jetbrains/jet/plugin/util/InfinitePeriodicalTask.java @@ -42,13 +42,17 @@ public class InfinitePeriodicalTask { public void run() { myUpdateAlarm.addRequest(this, delay); LongRunningReadTask task = taskProvider.compute(); - task.init(); + + boolean invalidRequest = !task.init(); //noinspection unchecked if (task.shouldStart(currentTask)) { currentTask = task; currentTask.run(); } + else if (invalidRequest) { + currentTask = null; + } } }, delay); diff --git a/idea/src/org/jetbrains/jet/plugin/util/LongRunningReadTask.java b/idea/src/org/jetbrains/jet/plugin/util/LongRunningReadTask.java index 06b28b4bc71..2d7e08c4552 100644 --- a/idea/src/org/jetbrains/jet/plugin/util/LongRunningReadTask.java +++ b/idea/src/org/jetbrains/jet/plugin/util/LongRunningReadTask.java @@ -125,11 +125,18 @@ public abstract class LongRunningReadTask { }); } - public final void init() { + /** + * Executed in GUI Thread. + * + * @return true if new request was successfully created, false if request is invalid and shouldn't be started + */ + public final boolean init() { ApplicationManager.getApplication().assertIsDispatchThread(); requestInfo = prepareRequestInfo(); currentState = State.INITIALIZED; + + return requestInfo != null; } private void resultReady(ResultData resultData) {