From 0c96c267b04779e4e845616daca146a8a62fe320 Mon Sep 17 00:00:00 2001 From: Tomasz Pasternak Date: Mon, 23 Sep 2024 22:39:22 +0200 Subject: [PATCH] chore: Support Jetbrains IDEs 243 - take into account that addListener expects suspend function --- .../AsyncVfsEventsPostProcessorCompat.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/sdkcompat/v243/com/google/idea/sdkcompat/general/AsyncVfsEventsPostProcessorCompat.java b/sdkcompat/v243/com/google/idea/sdkcompat/general/AsyncVfsEventsPostProcessorCompat.java index f2c5b9914c7..a6bdc78506a 100644 --- a/sdkcompat/v243/com/google/idea/sdkcompat/general/AsyncVfsEventsPostProcessorCompat.java +++ b/sdkcompat/v243/com/google/idea/sdkcompat/general/AsyncVfsEventsPostProcessorCompat.java @@ -19,8 +19,18 @@ import com.intellij.openapi.Disposable; import com.intellij.openapi.components.ComponentManagerEx; import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.newvfs.events.VFileEvent; + +import com.intellij.util.JavaCoroutines; import com.intellij.vfs.AsyncVfsEventsListener; import com.intellij.vfs.AsyncVfsEventsPostProcessor; +import kotlin.Unit; +import kotlin.coroutines.Continuation; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.function.Consumer; // #api242 public class AsyncVfsEventsPostProcessorCompat { @@ -28,7 +38,16 @@ private AsyncVfsEventsPostProcessorCompat(){ } - public static void addListener(AsyncVfsEventsListener listener, Disposable disposable, Project project) { - AsyncVfsEventsPostProcessor.getInstance().addListener(listener, ((ComponentManagerEx)project).getCoroutineScope()); + public static void addListener(Consumer> listener, Disposable disposable, Project project) { + AsyncVfsEventsPostProcessor.getInstance().addListener(new AsyncVfsEventsListener() { + @Override + public @Nullable Object filesChanged(@NotNull List list, @NotNull Continuation continuation) { + return JavaCoroutines.suspendJava(javaContinuation -> { + listener.accept(list); + javaContinuation.resume(Unit.INSTANCE); + } + , continuation); + } + }, ((ComponentManagerEx) project).getCoroutineScope()); } }