Fix AWT freeze in KotlinNativeABICompatibilityChecker (part 2)
Issue #KT-35052
This commit is contained in:
+2
-5
@@ -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() }
|
||||
+2
-2
@@ -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
|
||||
}
|
||||
|
||||
+2
-2
@@ -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")
|
||||
}
|
||||
|
||||
+3
-3
@@ -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()
|
||||
|
||||
+6
-5
@@ -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"
|
||||
|
||||
+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);
|
||||
}
|
||||
|
||||
+2
-2
@@ -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)
|
||||
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user