Fix AWT freeze in KotlinNativeABICompatibilityChecker (part 2)

Issue #KT-35052
This commit is contained in:
Dmitriy Dolovov
2019-11-22 20:57:54 +07:00
parent 0747a4d9b7
commit 58dd9a6004
17 changed files with 73 additions and 53 deletions
@@ -8,13 +8,12 @@ package org.jetbrains.kotlin.idea.caches.project
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.roots.JdkOrderEntry
import com.intellij.openapi.roots.LibraryOrderEntry
import com.intellij.openapi.roots.ModuleRootManager
import org.jetbrains.kotlin.caches.project.cacheInvalidatingOnRootModifications
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.types.typeUtil.closure
@@ -93,6 +92,4 @@ private fun mergePlatformModules(
return rest + platformModules
}
internal fun getAllProjectSdks(): Array<Sdk> = runReadAction {
ProjectJdkTable.getInstance().allJdks
}
internal fun getAllProjectSdks(): Array<Sdk> = getProjectJdkTableSafe().allJdks
@@ -0,0 +1,13 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:JvmName("IjPlatformUtil")
package org.jetbrains.kotlin.idea.util
import com.intellij.openapi.projectRoots.ProjectJdkTable
import org.jetbrains.kotlin.idea.util.application.runReadAction
fun getProjectJdkTableSafe(): ProjectJdkTable = runReadAction { ProjectJdkTable.getInstance() }
@@ -19,7 +19,6 @@ import com.intellij.openapi.extensions.Extensions
import com.intellij.openapi.fileTypes.FileTypeManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.projectRoots.JavaSdk
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.projectRoots.ex.PathUtilEx
import com.intellij.openapi.roots.ProjectRootManager
import com.intellij.openapi.vfs.VfsUtil
@@ -29,6 +28,7 @@ import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.caches.project.SdkInfo
import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.script.ScriptTemplatesProvider
import org.jetbrains.kotlin.scripting.definitions.*
import org.jetbrains.kotlin.utils.PathUtil
@@ -343,7 +343,7 @@ class BundledKotlinScriptDependenciesResolver(private val project: Project) : De
}
val jdk = ProjectRootManager.getInstance(project).projectSdk
?: ProjectJdkTable.getInstance().allJdks.firstOrNull { sdk -> sdk.sdkType is JavaSdk }
?: getProjectJdkTableSafe().allJdks.firstOrNull { sdk -> sdk.sdkType is JavaSdk }
?: PathUtilEx.getAnyJdk(project)
return jdk?.homePath
}
@@ -26,7 +26,6 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemUtil
import com.intellij.openapi.fileTypes.FileTypeManager
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.projectRoots.SimpleJavaSdkType
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.openapi.roots.ProjectRootManager
@@ -46,6 +45,7 @@ import junit.framework.TestCase
import org.jetbrains.kotlin.idea.codeInsight.gradle.ExternalSystemImportingTestCase.LATEST_STABLE_GRADLE_PLUGIN_VERSION
import org.jetbrains.kotlin.idea.codeInsight.gradle.GradleImportingTestCase
import org.jetbrains.kotlin.idea.configuration.KotlinGradleAbstractMultiplatformModuleBuilder
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper
import org.jetbrains.plugins.gradle.settings.DistributionType
import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings
@@ -250,7 +250,7 @@ abstract class AbstractGradleMultiplatformWizardTest : ProjectWizardTestCase<Abs
addSdk(SimpleJavaSdkType().createJdk("_other", javaHome))
println("ProjectWizardTestCase.configureJdk:")
println(listOf(*ProjectJdkTable.getInstance().allJdks))
println(listOf(*getProjectJdkTableSafe().allJdks))
FileTypeManager.getInstance().associateExtension(GroovyFileType.GROOVY_FILE_TYPE, "gradle")
}
@@ -20,7 +20,6 @@ import com.intellij.openapi.application.Result
import com.intellij.openapi.application.WriteAction
import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.projectRoots.JavaSdk
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.roots.LibraryOrderEntry
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.openapi.roots.OrderRootType
@@ -45,6 +44,7 @@ import org.jetbrains.kotlin.idea.framework.CommonLibraryKind
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
import org.jetbrains.kotlin.idea.util.projectStructure.sdk
import org.jetbrains.kotlin.platform.TargetPlatform
@@ -762,7 +762,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
object : WriteAction<Unit>() {
override fun run(result: Result<Unit>) {
val jdk = JavaSdk.getInstance().createJdk("myJDK", "my/path/to/jdk")
ProjectJdkTable.getInstance().addJdk(jdk)
getProjectJdkTableSafe().addJdk(jdk)
}
}.execute()
@@ -777,7 +777,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
} finally {
object : WriteAction<Unit>() {
override fun run(result: Result<Unit>) {
val jdkTable = ProjectJdkTable.getInstance()
val jdkTable = getProjectJdkTableSafe()
jdkTable.removeJdk(jdkTable.findJdk("myJDK")!!)
}
}.execute()
@@ -28,7 +28,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
import com.intellij.openapi.fileEditor.impl.LoadTextUtil
import com.intellij.openapi.fileTypes.FileTypeManager
import com.intellij.openapi.projectRoots.JavaSdk
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil
import com.intellij.openapi.ui.Messages
import com.intellij.openapi.ui.TestDialog
@@ -45,6 +44,7 @@ import org.intellij.lang.annotations.Language
import org.jetbrains.annotations.NonNls
import org.jetbrains.kotlin.idea.test.KotlinSdkCreationChecker
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.test.JUnitParameterizedWithIdeaConfigurationRunner
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.plugins.gradle.settings.DistributionType
@@ -110,13 +110,14 @@ abstract class GradleImportingTestCase : ExternalSystemImportingTestCase() {
assumeTrue(isApplicableTest())
assumeThat(gradleVersion, versionMatcherRule.matcher)
runWrite {
ProjectJdkTable.getInstance().findJdk(GRADLE_JDK_NAME)?.let {
ProjectJdkTable.getInstance().removeJdk(it)
val jdkTable = getProjectJdkTableSafe()
jdkTable.findJdk(GRADLE_JDK_NAME)?.let {
jdkTable.removeJdk(it)
}
val jdkHomeDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(File(myJdkHome))!!
val jdk = SdkConfigurationUtil.setupSdk(arrayOfNulls(0), jdkHomeDir, JavaSdk.getInstance(), true, null, GRADLE_JDK_NAME)
TestCase.assertNotNull("Cannot create JDK for $myJdkHome", jdk)
ProjectJdkTable.getInstance().addJdk(jdk!!)
jdkTable.addJdk(jdk!!)
FileTypeManager.getInstance().associateExtension(GroovyFileType.GROOVY_FILE_TYPE, "gradle")
}
@@ -135,7 +136,7 @@ abstract class GradleImportingTestCase : ExternalSystemImportingTestCase() {
override fun tearDown() {
try {
runWrite {
val old = ProjectJdkTable.getInstance().findJdk(GRADLE_JDK_NAME)
val old = getProjectJdkTableSafe().findJdk(GRADLE_JDK_NAME)
if (old != null) {
SdkConfigurationUtil.removeSdk(old)
}
@@ -20,7 +20,6 @@ import com.intellij.application.options.CodeStyle
import com.intellij.openapi.application.Result
import com.intellij.openapi.application.WriteAction
import com.intellij.openapi.projectRoots.JavaSdk
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.roots.CompilerModuleExtension
import com.intellij.openapi.roots.LibraryOrderEntry
import com.intellij.openapi.roots.ModuleRootManager
@@ -45,6 +44,7 @@ import org.jetbrains.kotlin.idea.framework.CommonLibraryKind
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
import org.jetbrains.kotlin.platform.CommonPlatforms
@@ -2540,7 +2540,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
object : WriteAction<Unit>() {
override fun run(result: Result<Unit>) {
val jdk = JavaSdk.getInstance().createJdk("myJDK", "my/path/to/jdk")
ProjectJdkTable.getInstance().addJdk(jdk)
getProjectJdkTableSafe().addJdk(jdk)
}
}.execute()
@@ -2597,7 +2597,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
} finally {
object : WriteAction<Unit>() {
override fun run(result: Result<Unit>) {
val jdkTable = ProjectJdkTable.getInstance()
val jdkTable = getProjectJdkTableSafe()
jdkTable.removeJdk(jdkTable.findJdk("myJDK")!!)
}
}.execute()
@@ -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"
@@ -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) }
@@ -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);
}
@@ -28,7 +28,6 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.project.ex.ProjectManagerEx
import com.intellij.openapi.project.impl.ProjectImpl
import com.intellij.openapi.projectRoots.JavaSdk
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl
import com.intellij.openapi.roots.ProjectRootManager
@@ -59,6 +58,7 @@ import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.cleanupCaches
import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.isAKotlinScriptFile
import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.openFileInEditor
import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.openFixture
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import java.io.File
import java.nio.file.Paths
@@ -89,7 +89,7 @@ abstract class AbstractPerformanceProjectsTest : UsefulTestCase() {
jdk18 = javaSdk.createJdk("1.8", homePath)
val internal = javaSdk.createJdk("IDEA jdk", homePath)
val jdkTable = ProjectJdkTable.getInstance()
val jdkTable = getProjectJdkTableSafe()
jdkTable.addJdk(jdk18, testRootDisposable)
jdkTable.addJdk(internal, testRootDisposable)
KotlinSdkType.setUpIfNeeded()
@@ -20,7 +20,6 @@ import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.ex.ApplicationEx
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.projectRoots.JavaSdk
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiElement
@@ -32,6 +31,7 @@ import com.intellij.xml.XmlSchemaProvider
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
import org.jetbrains.kotlin.idea.perf.Stats.Companion.tcSuite
import org.jetbrains.kotlin.idea.perf.Stats.Companion.tcTest
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import java.io.*
abstract class WholeProjectPerformanceTest : DaemonAnalyzerTestCase(), WholeProjectFileProvider {
@@ -57,7 +57,7 @@ abstract class WholeProjectPerformanceTest : DaemonAnalyzerTestCase(), WholeProj
val javaSdk = JavaSdk.getInstance()
val j8 = javaSdk.createJdk("1.8", homePath)
val jdkTable = ProjectJdkTable.getInstance()
val jdkTable = getProjectJdkTableSafe()
jdkTable.addJdk(j8, testRootDisposable)
KotlinSdkType.setUpIfNeeded()
}
@@ -20,7 +20,6 @@ import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsPr
import com.intellij.openapi.module.Module
import com.intellij.openapi.projectRoots.JavaSdk
import com.intellij.openapi.projectRoots.JavaSdkVersion
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.roots.ExternalProjectSystemRegistry
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.openapi.roots.ModuleRootModel
@@ -39,6 +38,7 @@ import org.jetbrains.kotlin.idea.core.isAndroidModule
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
import org.jetbrains.kotlin.idea.platform.tooling
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.platform.*
import org.jetbrains.kotlin.platform.compat.toNewPlatform
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
@@ -279,7 +279,7 @@ private fun Module.configureSdkIfPossible(compilerArguments: CommonCompilerArgum
val projectSdk = ProjectRootManager.getInstance(project).projectSdk
KotlinSdkType.setUpIfNeeded()
val allSdks = ProjectJdkTable.getInstance().allJdks
val allSdks = getProjectJdkTableSafe().allJdks
val sdk = if (compilerArguments is K2JVMCompilerArguments) {
val jdkHome = compilerArguments.jdkHome
when {
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.idea.caches.resolve
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.StdModuleTypes
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.roots.DependencyScope
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.openapi.roots.ModuleRootModificationUtil
@@ -28,6 +27,7 @@ import org.jetbrains.kotlin.idea.framework.CommonLibraryKind
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase.*
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.util.addDependency
@@ -347,13 +347,15 @@ class IdeaModuleInfoTest : ModuleTestCase() {
fun testSdkForScript() {
// The first known jdk will be used for scripting if there is no jdk in the project
runWriteAction {
ProjectJdkTable.getInstance().addJdk(mockJdk6())
ProjectJdkTable.getInstance().addJdk(mockJdk9())
val jdkTable = getProjectJdkTableSafe()
jdkTable.addJdk(mockJdk6())
jdkTable.addJdk(mockJdk9())
ProjectRootManager.getInstance(project).projectSdk = null
}
val firstSDK = ProjectJdkTable.getInstance().allJdks.first()
val firstSDK = getProjectJdkTableSafe().allJdks.first()
with(createFileInProject("script.kts").moduleInfo) {
dependencies().filterIsInstance<SdkInfo>().single { it.sdk == firstSDK }
@@ -362,8 +364,10 @@ class IdeaModuleInfoTest : ModuleTestCase() {
fun testSdkForScriptProjectSdk() {
runWriteAction {
ProjectJdkTable.getInstance().addJdk(mockJdk6())
ProjectJdkTable.getInstance().addJdk(mockJdk9())
val jdkTable = getProjectJdkTableSafe()
jdkTable.addJdk(mockJdk6())
jdkTable.addJdk(mockJdk9())
ProjectRootManager.getInstance(project).projectSdk = mockJdk9()
}
@@ -377,8 +381,10 @@ class IdeaModuleInfoTest : ModuleTestCase() {
val a = module("a")
runWriteAction {
ProjectJdkTable.getInstance().addJdk(mockJdk6())
ProjectJdkTable.getInstance().addJdk(mockJdk9())
val jdkTable = getProjectJdkTableSafe()
jdkTable.addJdk(mockJdk6())
jdkTable.addJdk(mockJdk9())
ProjectRootManager.getInstance(project).projectSdk = mockJdk6()
with(ModuleRootManager.getInstance(a).modifiableModel) {
@@ -10,7 +10,6 @@ import com.intellij.openapi.application.PathMacros
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.roots.ProjectRootManager
import com.intellij.openapi.util.io.FileUtil
@@ -22,6 +21,7 @@ import junit.framework.TestCase
import org.jetbrains.kotlin.idea.configuration.KotlinWithLibraryConfigurator.FileState
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.utils.PathUtil
import java.io.File
@@ -49,9 +49,11 @@ abstract class AbstractConfigureKotlinTest : PlatformTestCase() {
KotlinSdkType.setUpIfNeeded()
ApplicationManager.getApplication().runWriteAction {
ProjectJdkTable.getInstance().addJdk(PluginTestCaseBase.mockJdk6())
ProjectJdkTable.getInstance().addJdk(PluginTestCaseBase.mockJdk8())
ProjectJdkTable.getInstance().addJdk(PluginTestCaseBase.mockJdk9())
val jdkTable = getProjectJdkTableSafe()
jdkTable.addJdk(PluginTestCaseBase.mockJdk6())
jdkTable.addJdk(PluginTestCaseBase.mockJdk8())
jdkTable.addJdk(PluginTestCaseBase.mockJdk9())
}
PluginTestCaseBase.clearSdkTable(testRootDisposable)
@@ -5,8 +5,8 @@
package org.jetbrains.kotlin.idea.configuration
import com.intellij.openapi.projectRoots.ProjectJdkTable
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
import org.junit.Assert
import org.junit.runner.RunWith
@@ -15,6 +15,6 @@ import org.junit.runner.RunWith
@RunWith(JUnit3WithIdeaConfigurationRunner::class)
class AutoConfigureKotlinSdkOnStartupTest : AbstractConfigureKotlinInTempDirTest() {
fun testKotlinSdkAdded() {
Assert.assertTrue(ProjectJdkTable.getInstance().allJdks.any { it.sdkType is KotlinSdkType })
Assert.assertTrue(getProjectJdkTableSafe().allJdks.any { it.sdkType is KotlinSdkType })
}
}
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.idea.script
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.module.JavaModuleType
import com.intellij.openapi.module.Module
import com.intellij.openapi.projectRoots.ProjectJdkTable
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.roots.ModuleRootModificationUtil
import com.intellij.openapi.roots.ProjectRootManager
@@ -30,6 +29,7 @@ import org.jetbrains.kotlin.idea.core.script.isScriptChangesNotifierDisabled
import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingUtil
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
import org.jetbrains.kotlin.test.KotlinTestUtils
@@ -78,7 +78,7 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
private val sdk by lazy {
val jdk = PluginTestCaseBase.jdk(TestJdkKind.MOCK_JDK)
runWriteAction {
ProjectJdkTable.getInstance().addJdk(jdk, testRootDisposable)
getProjectJdkTableSafe().addJdk(jdk, testRootDisposable)
ProjectRootManager.getInstance(project).projectSdk = jdk
}
jdk
@@ -208,7 +208,7 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
}
runWriteAction {
val jdk = PluginTestCaseBase.jdk(jdkKind)
ProjectJdkTable.getInstance().addJdk(jdk, testRootDisposable)
getProjectJdkTableSafe().addJdk(jdk, testRootDisposable)
env["javaHome"] = File(jdk.homePath)
}