diff --git a/buildSrc/src/main/kotlin/intellijDependencies.kt b/buildSrc/src/main/kotlin/intellijDependencies.kt index bc52ea5edc1..75ad3ebd2c5 100644 --- a/buildSrc/src/main/kotlin/intellijDependencies.kt +++ b/buildSrc/src/main/kotlin/intellijDependencies.kt @@ -11,6 +11,7 @@ val Project.intellijVersion get() = rootProject.extra["versions.intellijSdk"] fun Project.intellijCore() = dependencies.project(":dependencies:intellij-core") +fun Project.intellijUtilRt() = "com.jetbrains.intellij.platform:util-rt:$intellijVersion" fun Project.jpsModel() = "com.jetbrains.intellij.platform:jps-model:$intellijVersion" fun Project.jpsModelSerialization() = "com.jetbrains.intellij.platform:jps-model-serialization:$intellijVersion" diff --git a/jps/jps-common/build.gradle.kts b/jps/jps-common/build.gradle.kts index 3aef8c4f9c2..311221f29c7 100644 --- a/jps/jps-common/build.gradle.kts +++ b/jps/jps-common/build.gradle.kts @@ -13,7 +13,8 @@ dependencies { api(project(":compiler:frontend.java")) api(project(":js:js.frontend")) api(project(":native:frontend.native")) - compileOnly(intellijCore()) + compileOnly(intellijUtilRt()) + compileOnly(intellijPlatformUtil()) compileOnly(jpsModel()) compileOnly(jpsModelImpl()) compileOnly(jpsModelSerialization()) diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/JpsUtils.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/JpsUtils.kt index b3ff11964ff..f502fe8333f 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/JpsUtils.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/JpsUtils.kt @@ -5,9 +5,7 @@ package org.jetbrains.kotlin.config -import com.intellij.openapi.application.ApplicationManager - -private const val APPLICATION_MANAGER_CLASS_NAME = "com.intellij.openapi.application.ApplicationManager" +const val APPLICATION_MANAGER_CLASS_NAME = "com.intellij.openapi.application.ApplicationManager" val isJps: Boolean by lazy { /* @@ -16,7 +14,7 @@ val isJps: Boolean by lazy { Though Application is not properly initialized inside JPS so we can use it as a check. */ return@lazy if (doesClassExist(APPLICATION_MANAGER_CLASS_NAME)) { - ApplicationManager.getApplication() == null + Class.forName(APPLICATION_MANAGER_CLASS_NAME).getMethod("getApplication").invoke(null) == null } else { true } diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt index 5049eedc230..88c23e7a849 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt @@ -5,8 +5,6 @@ package org.jetbrains.kotlin.config -import com.intellij.openapi.module.Module -import com.intellij.openapi.project.Project import org.jetbrains.kotlin.cli.common.arguments.* import org.jetbrains.kotlin.platform.IdePlatformKind import org.jetbrains.kotlin.platform.TargetPlatform @@ -276,13 +274,3 @@ class KotlinFacetSettings { var pureKotlinSourceFolders: List = emptyList() } - -interface KotlinFacetSettingsProvider { - fun getSettings(module: Module): KotlinFacetSettings? - fun getInitializedSettings(module: Module): KotlinFacetSettings - - companion object { - fun getInstance(project: Project): KotlinFacetSettingsProvider? = project.takeUnless(Project::isDisposed) - ?.getService(KotlinFacetSettingsProvider::class.java) - } -} diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt index c138a5c1c34..43ad43af414 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.config -import com.intellij.util.PathUtil +import com.intellij.openapi.util.io.FileUtilRt import com.intellij.util.xmlb.SerializationFilter import com.intellij.util.xmlb.SkipDefaultsSerializationFilter import com.intellij.util.xmlb.XmlSerializer @@ -179,10 +179,10 @@ private fun readV2AndLaterConfig( compilerArguments!!.detectVersionAutoAdvance() } productionOutputPath = element.getChild("productionOutputPath")?.let { - PathUtil.toSystemDependentName((it.content.firstOrNull() as? Text)?.textTrim) + (it.content.firstOrNull() as? Text)?.textTrim?.let(FileUtilRt::toSystemDependentName) } ?: (compilerArguments as? K2JSCompilerArguments)?.outputFile testOutputPath = element.getChild("testOutputPath")?.let { - PathUtil.toSystemDependentName((it.content.firstOrNull() as? Text)?.textTrim) + (it.content.firstOrNull() as? Text)?.textTrim?.let(FileUtilRt::toSystemDependentName) } ?: (compilerArguments as? K2JSCompilerArguments)?.outputFile } } @@ -222,33 +222,33 @@ fun deserializeFacetSettings(element: Element): KotlinFacetSettings { } fun CommonCompilerArguments.convertPathsToSystemIndependent() { - pluginClasspaths?.forEachIndexed { index, s -> pluginClasspaths!![index] = PathUtil.toSystemIndependentName(s) } + pluginClasspaths?.forEachIndexed { index, s -> pluginClasspaths!![index] = FileUtilRt.toSystemIndependentName(s) } when (this) { is K2JVMCompilerArguments -> { - destination = PathUtil.toSystemIndependentName(destination) - classpath = PathUtil.toSystemIndependentName(classpath) - jdkHome = PathUtil.toSystemIndependentName(jdkHome) - kotlinHome = PathUtil.toSystemIndependentName(kotlinHome) - friendPaths?.forEachIndexed { index, s -> friendPaths!![index] = PathUtil.toSystemIndependentName(s) } - declarationsOutputPath = PathUtil.toSystemIndependentName(declarationsOutputPath) + destination = destination?.let(FileUtilRt::toSystemIndependentName) + classpath = classpath?.let(FileUtilRt::toSystemIndependentName) + jdkHome = jdkHome?.let(FileUtilRt::toSystemIndependentName) + kotlinHome = kotlinHome?.let(FileUtilRt::toSystemIndependentName) + friendPaths?.forEachIndexed { index, s -> friendPaths!![index] = FileUtilRt.toSystemIndependentName(s) } + declarationsOutputPath = declarationsOutputPath?.let(FileUtilRt::toSystemIndependentName) } is K2JSCompilerArguments -> { - outputFile = PathUtil.toSystemIndependentName(outputFile) - libraries = PathUtil.toSystemIndependentName(libraries) + outputFile = outputFile?.let(FileUtilRt::toSystemIndependentName) + libraries = libraries?.let(FileUtilRt::toSystemIndependentName) } is K2MetadataCompilerArguments -> { - destination = PathUtil.toSystemIndependentName(destination) - classpath = PathUtil.toSystemIndependentName(classpath) + destination = destination?.let(FileUtilRt::toSystemIndependentName) + classpath = classpath?.let(FileUtilRt::toSystemIndependentName) } } } fun CompilerSettings.convertPathsToSystemIndependent() { - scriptTemplatesClasspath = PathUtil.toSystemIndependentName(scriptTemplatesClasspath) - outputDirectoryForJsLibraryFiles = PathUtil.toSystemIndependentName(outputDirectoryForJsLibraryFiles) + scriptTemplatesClasspath = FileUtilRt.toSystemIndependentName(scriptTemplatesClasspath) + outputDirectoryForJsLibraryFiles = FileUtilRt.toSystemIndependentName(outputDirectoryForJsLibraryFiles) } private fun KClass<*>.superClass() = superclasses.firstOrNull { !it.java.isInterface } @@ -351,12 +351,12 @@ private fun KotlinFacetSettings.writeConfig(element: Element) { } productionOutputPath?.let { if (it != (compilerArguments as? K2JSCompilerArguments)?.outputFile) { - element.addContent(Element("productionOutputPath").apply { addContent(PathUtil.toSystemIndependentName(it)) }) + element.addContent(Element("productionOutputPath").apply { addContent(FileUtilRt.toSystemIndependentName(it)) }) } } testOutputPath?.let { if (it != (compilerArguments as? K2JSCompilerArguments)?.outputFile) { - element.addContent(Element("testOutputPath").apply { addContent(PathUtil.toSystemIndependentName(it)) }) + element.addContent(Element("testOutputPath").apply { addContent(FileUtilRt.toSystemIndependentName(it)) }) } } compilerSettings?.let { copyBean(it) }?.let { diff --git a/jps/jps-common/src/org/jetbrains/kotlin/platform/DefaultIdeTargetPlatformKindProvider.kt b/jps/jps-common/src/org/jetbrains/kotlin/platform/DefaultIdeTargetPlatformKindProvider.kt index ed6a037e029..ecac80e15c2 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/platform/DefaultIdeTargetPlatformKindProvider.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/platform/DefaultIdeTargetPlatformKindProvider.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.platform -import com.intellij.openapi.application.ApplicationManager +import org.jetbrains.kotlin.config.APPLICATION_MANAGER_CLASS_NAME import org.jetbrains.kotlin.config.isJps import org.jetbrains.kotlin.platform.jvm.JvmPlatforms @@ -20,7 +20,10 @@ interface DefaultIdeTargetPlatformKindProvider { return JvmPlatforms.defaultJvmPlatform } - return ApplicationManager.getApplication().getService(DefaultIdeTargetPlatformKindProvider::class.java).defaultPlatform + val application = Class.forName(APPLICATION_MANAGER_CLASS_NAME).getMethod("getApplication").invoke(null) + val service = application::class.java.getMethod("getService", Class::class.java) + .invoke(application, DefaultIdeTargetPlatformKindProvider::class.java) as DefaultIdeTargetPlatformKindProvider + return service.defaultPlatform } } } diff --git a/jps/jps-plugin/build.gradle.kts b/jps/jps-plugin/build.gradle.kts index f0fab6b303e..f1941c85650 100644 --- a/jps/jps-plugin/build.gradle.kts +++ b/jps/jps-plugin/build.gradle.kts @@ -31,7 +31,6 @@ dependencies { api(project(":kotlin-preloader")) api(project(":jps:jps-common")) compileOnly(commonDependency("org.jetbrains.intellij.deps.fastutil:intellij-deps-fastutil")) - compileOnly(intellijCore()) compileOnly(jpsModel()) compileOnly(jpsModelImpl()) compileOnly(jpsBuild()) @@ -68,8 +67,6 @@ dependencies { testCompileOnly(jpsBuild()) testApi(devKitJps()) - testApi(intellijCore()) - testApi(jpsBuildTest()) compilerModules.forEach { testRuntimeOnly(project(it)) diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/SimpleKotlinJpsBuildTest.kt b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/SimpleKotlinJpsBuildTest.kt index a228fcceb6c..06632f3c389 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/SimpleKotlinJpsBuildTest.kt +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/SimpleKotlinJpsBuildTest.kt @@ -16,7 +16,7 @@ package org.jetbrains.kotlin.jps.build -import com.intellij.util.PathUtil +import com.intellij.util.PathUtilRt import org.jetbrains.jps.model.java.JpsJavaExtensionService import org.jetbrains.kotlin.cli.common.CompilerSystemProperties import org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner @@ -46,7 +46,7 @@ class SimpleKotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() { K bar(); } """) - val a = addModule("m1", PathUtil.getParentPath(aFile)) + val a = addModule("m1", PathUtilRt.getParentPath(aFile)) val bFile = createFile("m2/m2.kt", """ @@ -57,7 +57,7 @@ class SimpleKotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() { override fun bar(): K } """) - val b = addModule("b", PathUtil.getParentPath(bFile)) + val b = addModule("b", PathUtilRt.getParentPath(bFile)) JpsJavaExtensionService.getInstance().getOrCreateDependencyExtension( b.dependenciesList.addModuleDependency(a) ).isExported = false diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinJvmModuleBuildTarget.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinJvmModuleBuildTarget.kt index 63a598fbc2f..0b1aa30ae02 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinJvmModuleBuildTarget.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinJvmModuleBuildTarget.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.jps.targets import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.text.StringUtil -import com.intellij.openapi.vfs.StandardFileSystems import com.intellij.util.containers.FileCollectionFactory import com.intellij.util.io.URLUtil import org.jetbrains.jps.ModuleChunk @@ -321,9 +320,9 @@ class KotlinJvmModuleBuildTarget(kotlinContext: KotlinCompileContext, jpsModuleB .satisfying { dependency -> dependency is JpsSdkDependency } .classes().urls - val url = urls.firstOrNull { it.startsWith(StandardFileSystems.JRT_PROTOCOL_PREFIX) } ?: return null + val url = urls.firstOrNull { it.startsWith(URLUtil.JRT_PROTOCOL + URLUtil.SCHEME_SEPARATOR) } ?: return null - return File(url.substringAfter(StandardFileSystems.JRT_PROTOCOL_PREFIX).substringBeforeLast(URLUtil.JAR_SEPARATOR)) + return File(url.substringAfter(URLUtil.JRT_PROTOCOL + URLUtil.SCHEME_SEPARATOR).substringBeforeLast(URLUtil.JAR_SEPARATOR)) } private fun findSourceRoots(context: CompileContext): List {