mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
[kotlin] Add Module.kotlinToolingVersion in 'external-build-system'
This API is intended to be offering versions (such as the Kotlin Gradle Plugin version) GitOrigin-RevId: 98e6c3dde132e248c8de4e227b0b00cf97f31df2
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3c9dfaea46
commit
db18f08a1c
@@ -16,5 +16,6 @@
|
||||
<orderEntry type="module" module-name="intellij.platform.projectModel.impl" />
|
||||
<orderEntry type="module" module-name="intellij.platform.execution" />
|
||||
<orderEntry type="module" module-name="intellij.platform.externalSystem" />
|
||||
<orderEntry type="library" name="kotlin-tooling-core" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -4,6 +4,7 @@ package org.jetbrains.kotlin.idea.base.externalSystem
|
||||
import com.intellij.openapi.extensions.ExtensionPointName
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.util.IntellijInternalApi
|
||||
import org.jetbrains.kotlin.tooling.core.KotlinToolingVersion
|
||||
|
||||
/**
|
||||
* Intended to provide build system specific information about a given project, which is not relevant
|
||||
@@ -15,6 +16,11 @@ import com.intellij.openapi.util.IntellijInternalApi
|
||||
interface KotlinBuildSystemFacade {
|
||||
fun findSourceSet(module: Module): KotlinBuildSystemSourceSet?
|
||||
|
||||
/**
|
||||
* See [Module.kotlinToolingVersion]
|
||||
*/
|
||||
fun getKotlinToolingVersion(module: Module): KotlinToolingVersion?
|
||||
|
||||
companion object {
|
||||
|
||||
@JvmStatic
|
||||
@@ -26,10 +32,54 @@ interface KotlinBuildSystemFacade {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Kotlin Tooling Version as imported by an external system (such as Gradle)
|
||||
*
|
||||
* ## e.g., Gradle
|
||||
* ```kotlin
|
||||
* //build.gradle.kts
|
||||
*
|
||||
* plugins {
|
||||
* kotlin("jvm") version "2.0.20-Beta01"
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* Will return "2.0.20-Beta01" as
|
||||
* - major: 2
|
||||
* - minor: 0
|
||||
* - patch: 20
|
||||
* - classifier: "Beta01"
|
||||
* - toString: "2.0.20-Beta01"
|
||||
*
|
||||
* See [kotlinToolingVersion].
|
||||
*
|
||||
*
|
||||
* Example Usage
|
||||
* ```kotlin
|
||||
* fun example(module: Module) {
|
||||
* val version = module.kotlinToolingVersion ?: return
|
||||
* if(version >= "1.9.20-Beta01") {
|
||||
* // Code
|
||||
* }
|
||||
*
|
||||
* if(version >= KotlinToolingVersion(1, 9, 20, "Beta01")) {
|
||||
* // Code
|
||||
* }
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
val Module.kotlinToolingVersion: KotlinToolingVersion?
|
||||
get() = KotlinBuildSystemFacade.getInstance().getKotlinToolingVersion(this)
|
||||
|
||||
|
||||
private class KotlinBuildSystemCompositeFacade(
|
||||
private val instances: List<KotlinBuildSystemFacade>
|
||||
) : KotlinBuildSystemFacade {
|
||||
override fun findSourceSet(module: Module): KotlinBuildSystemSourceSet? {
|
||||
return instances.firstNotNullOfOrNull { instance -> instance.findSourceSet(module) }
|
||||
}
|
||||
|
||||
override fun getKotlinToolingVersion(module: Module): KotlinToolingVersion? {
|
||||
return instances.firstNotNullOfOrNull { instance -> instance.getKotlinToolingVersion(module) }
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,10 @@ import com.intellij.openapi.module.Module
|
||||
import org.jetbrains.kotlin.idea.base.externalSystem.KotlinBuildSystemFacade
|
||||
import org.jetbrains.kotlin.idea.base.externalSystem.KotlinBuildSystemSourceSet
|
||||
import org.jetbrains.kotlin.idea.gradle.configuration.kotlinSourceSetData
|
||||
import org.jetbrains.kotlin.idea.gradleTooling.toKotlinToolingVersion
|
||||
import org.jetbrains.kotlin.idea.projectModel.KotlinCompilation
|
||||
import org.jetbrains.kotlin.idea.projectModel.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.tooling.core.KotlinToolingVersion
|
||||
import org.jetbrains.plugins.gradle.execution.build.CachedModuleDataFinder
|
||||
|
||||
internal class KotlinGradleBuildSystemFacade : KotlinBuildSystemFacade {
|
||||
@@ -23,4 +25,8 @@ internal class KotlinGradleBuildSystemFacade : KotlinBuildSystemFacade {
|
||||
sourceDirectories = kotlinSourceSet.sourceDirs.map { file -> file.toPath() }
|
||||
)
|
||||
}
|
||||
|
||||
override fun getKotlinToolingVersion(module: Module): KotlinToolingVersion? {
|
||||
return module.kotlinGradlePluginVersion?.toKotlinToolingVersion()
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,6 @@ package org.jetbrains.kotlin.idea.multiplatform
|
||||
import com.intellij.openapi.application.runReadAction
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.module.StdModuleTypes
|
||||
import com.intellij.openapi.observable.util.whenDisposed
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.vfs.LocalFileSystem
|
||||
@@ -18,15 +17,13 @@ import org.jetbrains.kotlin.idea.base.platforms.KotlinWasmJsLibraryKind
|
||||
import org.jetbrains.kotlin.idea.base.platforms.KotlinWasmWasiLibraryKind
|
||||
import org.jetbrains.kotlin.idea.base.plugin.artifacts.TestKotlinArtifacts
|
||||
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
|
||||
import org.jetbrains.kotlin.idea.test.AbstractMultiModuleTest
|
||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
||||
import org.jetbrains.kotlin.idea.test.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.idea.test.createMultiplatformFacetM1
|
||||
import org.jetbrains.kotlin.idea.test.createMultiplatformFacetM3
|
||||
import org.jetbrains.kotlin.idea.test.*
|
||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||
import org.jetbrains.kotlin.idea.util.sourceRoots
|
||||
import org.jetbrains.kotlin.platform.*
|
||||
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.platform.isJs
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
@@ -37,6 +34,7 @@ import org.jetbrains.kotlin.platform.wasm.isWasmJs
|
||||
import org.jetbrains.kotlin.platform.wasm.isWasmWasi
|
||||
import org.jetbrains.kotlin.projectModel.*
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import org.jetbrains.kotlin.tooling.core.KotlinToolingVersion
|
||||
import org.jetbrains.kotlin.utils.closure
|
||||
import java.io.File
|
||||
|
||||
@@ -254,6 +252,10 @@ private fun AbstractMultiModuleTest.setupKotlinBuildSystemFacade() {
|
||||
name = module.name,
|
||||
sourceDirectories = module.sourceRoots.map { it.toNioPath() }
|
||||
)
|
||||
|
||||
override fun getKotlinToolingVersion(module: Module): KotlinToolingVersion? {
|
||||
return null
|
||||
}
|
||||
}, testRootDisposable)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user