Fix AWT freeze in KotlinNativeABICompatibilityChecker (part 2)
Issue #KT-35052
This commit is contained in:
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.test
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.roots.LibraryOrderEntry
|
||||
import com.intellij.openapi.roots.ModifiableRootModel
|
||||
@@ -33,6 +32,7 @@ import com.intellij.openapi.vfs.VfsUtil
|
||||
import org.jetbrains.kotlin.idea.framework.CommonLibraryKind
|
||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import org.jetbrains.kotlin.utils.PathUtil
|
||||
import java.io.File
|
||||
@@ -109,7 +109,7 @@ object ConfigLibraryUtil {
|
||||
val rootModel = rootManager.modifiableModel
|
||||
|
||||
assertNotNull(
|
||||
ProjectJdkTable.getInstance().findJdk(sdk.name),
|
||||
getProjectJdkTableSafe().findJdk(sdk.name),
|
||||
"Cannot find sdk in ProjectJdkTable. This may cause sdk leak.\n" +
|
||||
"You can use ProjectPluginTestBase.addJdk(Disposable ...) to register sdk in ProjectJdkTable.\n" +
|
||||
"Then sdk will be removed in tearDown"
|
||||
|
||||
+5
-5
@@ -7,23 +7,23 @@ package org.jetbrains.kotlin.idea.test
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.runWriteAction
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
|
||||
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
|
||||
|
||||
class KotlinSdkCreationChecker {
|
||||
|
||||
private val sdksBefore: Array<out Sdk> = ProjectJdkTable.getInstance().allJdks
|
||||
private val sdksBefore: Array<out Sdk> = getProjectJdkTableSafe().allJdks
|
||||
|
||||
fun getKotlinSdks() = ProjectJdkTable.getInstance().allJdks.filter { it.sdkType is KotlinSdkType }
|
||||
fun getKotlinSdks() = getProjectJdkTableSafe().allJdks.filter { it.sdkType is KotlinSdkType }
|
||||
|
||||
private fun getCreatedKotlinSdks() =
|
||||
ProjectJdkTable.getInstance().allJdks.filter { !sdksBefore.contains(it) && it.sdkType is KotlinSdkType }
|
||||
getProjectJdkTableSafe().allJdks.filter { !sdksBefore.contains(it) && it.sdkType is KotlinSdkType }
|
||||
|
||||
fun isKotlinSdkCreated() = getCreatedKotlinSdks().isNotEmpty()
|
||||
|
||||
fun removeNewKotlinSdk() {
|
||||
val jdkTable = ProjectJdkTable.getInstance()
|
||||
val jdkTable = getProjectJdkTableSafe()
|
||||
ApplicationManager.getApplication().invokeAndWait {
|
||||
runWriteAction {
|
||||
getCreatedKotlinSdks().forEach { jdkTable.removeJdk(it) }
|
||||
|
||||
+4
-3
@@ -28,6 +28,7 @@ import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess;
|
||||
import kotlin.jvm.functions.Function0;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
import org.jetbrains.kotlin.idea.util.IjPlatformUtil;
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||
import org.jetbrains.kotlin.test.TestJdkKind;
|
||||
|
||||
@@ -53,7 +54,7 @@ public class PluginTestCaseBase {
|
||||
|
||||
@NotNull
|
||||
private static Sdk getSdk(String sdkHome, String name) {
|
||||
ProjectJdkTable table = ProjectJdkTable.getInstance();
|
||||
ProjectJdkTable table = IjPlatformUtil.getProjectJdkTableSafe();
|
||||
Sdk existing = table.findJdk(name);
|
||||
if (existing != null) {
|
||||
return existing;
|
||||
@@ -93,7 +94,7 @@ public class PluginTestCaseBase {
|
||||
@NotNull
|
||||
public static Sdk addJdk(@NotNull Disposable disposable, @NotNull Function0<Sdk> getJdk) {
|
||||
Sdk jdk = getJdk.invoke();
|
||||
ApplicationManager.getApplication().runWriteAction(() -> ProjectJdkTable.getInstance().addJdk(jdk, disposable));
|
||||
ApplicationManager.getApplication().runWriteAction(() -> IjPlatformUtil.getProjectJdkTableSafe().addJdk(jdk, disposable));
|
||||
return jdk;
|
||||
}
|
||||
|
||||
@@ -120,7 +121,7 @@ public class PluginTestCaseBase {
|
||||
@TestOnly
|
||||
public static void clearSdkTable(@NotNull Disposable disposable) {
|
||||
Disposer.register(disposable, () -> ApplicationManager.getApplication().runWriteAction(() -> {
|
||||
ProjectJdkTable jdkTable = ProjectJdkTable.getInstance();
|
||||
ProjectJdkTable jdkTable = IjPlatformUtil.getProjectJdkTableSafe();
|
||||
for (Sdk sdk : jdkTable.getAllJdks()) {
|
||||
jdkTable.removeJdk(sdk);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user