Gradle: Inherit project SDK when no explicit one is specified
#KT-27145 Fixed
This commit is contained in:
@@ -223,6 +223,10 @@ class ModuleInfo(
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (rootModel.sdk == null) {
|
||||
projectInfo.messageCollector.report("Module '${module.name}': No SDK defined")
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkDependencyScope(library: ExportableOrderEntry, scope: DependencyScope) {
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.intellij.openapi.projectRoots.ProjectJdkTable
|
||||
import com.intellij.openapi.roots.ExternalProjectSystemRegistry
|
||||
import com.intellij.openapi.roots.ModuleRootManager
|
||||
import com.intellij.openapi.roots.ModuleRootModel
|
||||
import com.intellij.openapi.roots.ProjectRootManager
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import org.jetbrains.kotlin.cli.common.arguments.*
|
||||
@@ -228,22 +229,32 @@ private val CommonCompilerArguments.ignoredFields: List<String>
|
||||
}
|
||||
|
||||
private fun Module.configureSdkIfPossible(compilerArguments: CommonCompilerArguments, modelsProvider: IdeModifiableModelsProvider) {
|
||||
val projectSdk = ProjectRootManager.getInstance(project).projectSdk
|
||||
val allSdks = ProjectJdkTable.getInstance().allJdks
|
||||
val sdk = if (compilerArguments is K2JVMCompilerArguments) {
|
||||
val jdkHome = compilerArguments.jdkHome
|
||||
allSdks.firstOrNull { it.sdkType is JavaSdk && FileUtil.comparePaths(it.homePath, jdkHome) == 0 }
|
||||
when {
|
||||
jdkHome != null -> allSdks.firstOrNull { it.sdkType is JavaSdk && FileUtil.comparePaths(it.homePath, jdkHome) == 0 }
|
||||
projectSdk != null && projectSdk.sdkType is JavaSdk -> projectSdk
|
||||
else -> allSdks.firstOrNull { it.sdkType is JavaSdk }
|
||||
}
|
||||
} else {
|
||||
allSdks.firstOrNull { it.sdkType is KotlinSdkType }
|
||||
?: modelsProvider
|
||||
.modifiableModuleModel
|
||||
.modules
|
||||
.asSequence()
|
||||
.mapNotNull { modelsProvider.getModifiableRootModel(it).sdk }
|
||||
.firstOrNull { it.sdkType is KotlinSdkType }
|
||||
?: KotlinSdkType.INSTANCE.createSdkWithUniqueName(allSdks.toList())
|
||||
?: modelsProvider
|
||||
.modifiableModuleModel
|
||||
.modules
|
||||
.asSequence()
|
||||
.mapNotNull { modelsProvider.getModifiableRootModel(it).sdk }
|
||||
.firstOrNull { it.sdkType is KotlinSdkType }
|
||||
?: KotlinSdkType.INSTANCE.createSdkWithUniqueName(allSdks.toList())
|
||||
}
|
||||
|
||||
modelsProvider.getModifiableRootModel(this).sdk = sdk
|
||||
val rootModel = modelsProvider.getModifiableRootModel(this)
|
||||
if (sdk == null || sdk == projectSdk) {
|
||||
rootModel.inheritSdk()
|
||||
} else {
|
||||
rootModel.sdk = sdk
|
||||
}
|
||||
}
|
||||
|
||||
fun parseCompilerArgumentsToFacet(
|
||||
|
||||
Reference in New Issue
Block a user