From 89b12285d1c64105c748b403e5f8bd7d9803d05a Mon Sep 17 00:00:00 2001 From: Evgenii Novozhilov Date: Tue, 15 Aug 2023 17:16:23 +0300 Subject: [PATCH] Handle null function returned from CLion code method is declared as @Nullable in CLion SDK though sdkcompat ignores this hint. fixes #5247. --- .../clion/CMakeNotificationProviderWrapper.java | 12 +++++++++++- .../clion/CMakeNotificationProviderWrapper.java | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/sdkcompat/v231/com/google/idea/sdkcompat/clion/CMakeNotificationProviderWrapper.java b/sdkcompat/v231/com/google/idea/sdkcompat/clion/CMakeNotificationProviderWrapper.java index 301663e1a1c..843ace9235e 100644 --- a/sdkcompat/v231/com/google/idea/sdkcompat/clion/CMakeNotificationProviderWrapper.java +++ b/sdkcompat/v231/com/google/idea/sdkcompat/clion/CMakeNotificationProviderWrapper.java @@ -6,6 +6,8 @@ import com.intellij.openapi.vfs.VirtualFile; import com.jetbrains.cidr.cpp.cmake.workspace.CMakeNotificationProvider; +import java.util.function.Function; +import javax.annotation.Nullable; import javax.swing.*; // #api223 @@ -16,7 +18,15 @@ public CMakeNotificationProviderWrapper(){ this.value = new CMakeNotificationProvider(); } + @Nullable public JComponent createNotificationPanel(VirtualFile virtualFile, FileEditor fileEditor, Project project) { - return this.value.collectNotificationData(project, virtualFile).apply(fileEditor); + Function notificationProducer = + this.value.collectNotificationData(project, virtualFile); + + if (notificationProducer != null) { + return notificationProducer.apply(fileEditor); + } + + return null; } } diff --git a/sdkcompat/v232/com/google/idea/sdkcompat/clion/CMakeNotificationProviderWrapper.java b/sdkcompat/v232/com/google/idea/sdkcompat/clion/CMakeNotificationProviderWrapper.java index 301663e1a1c..843ace9235e 100644 --- a/sdkcompat/v232/com/google/idea/sdkcompat/clion/CMakeNotificationProviderWrapper.java +++ b/sdkcompat/v232/com/google/idea/sdkcompat/clion/CMakeNotificationProviderWrapper.java @@ -6,6 +6,8 @@ import com.intellij.openapi.vfs.VirtualFile; import com.jetbrains.cidr.cpp.cmake.workspace.CMakeNotificationProvider; +import java.util.function.Function; +import javax.annotation.Nullable; import javax.swing.*; // #api223 @@ -16,7 +18,15 @@ public CMakeNotificationProviderWrapper(){ this.value = new CMakeNotificationProvider(); } + @Nullable public JComponent createNotificationPanel(VirtualFile virtualFile, FileEditor fileEditor, Project project) { - return this.value.collectNotificationData(project, virtualFile).apply(fileEditor); + Function notificationProducer = + this.value.collectNotificationData(project, virtualFile); + + if (notificationProducer != null) { + return notificationProducer.apply(fileEditor); + } + + return null; } }