Split modules scan based if facedSettings can affect api/lang level of module
^KTIJ-249 Fixed Original commit: d280fb1fe466ef7b6ef7559067032033bedefd6e
This commit is contained in:
+28
-8
@@ -20,6 +20,7 @@ import com.intellij.notification.NotificationDisplayType
|
|||||||
import com.intellij.notification.NotificationsConfiguration
|
import com.intellij.notification.NotificationsConfiguration
|
||||||
import com.intellij.openapi.application.runReadAction
|
import com.intellij.openapi.application.runReadAction
|
||||||
import com.intellij.openapi.externalSystem.service.project.manage.ProjectDataImportListener
|
import com.intellij.openapi.externalSystem.service.project.manage.ProjectDataImportListener
|
||||||
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.progress.ProgressIndicator
|
import com.intellij.openapi.progress.ProgressIndicator
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
import com.intellij.openapi.progress.Task
|
import com.intellij.openapi.progress.Task
|
||||||
@@ -27,8 +28,10 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.openapi.startup.StartupActivity
|
import com.intellij.openapi.startup.StartupActivity
|
||||||
import com.intellij.psi.search.FileTypeIndex
|
import com.intellij.psi.search.FileTypeIndex
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
|
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.KotlinJvmBundle
|
import org.jetbrains.kotlin.idea.KotlinJvmBundle
|
||||||
|
import org.jetbrains.kotlin.idea.compiler.configuration.Kotlin2JvmCompilerArgumentsHolder
|
||||||
import org.jetbrains.kotlin.idea.configuration.notifyOutdatedBundledCompilerIfNecessary
|
import org.jetbrains.kotlin.idea.configuration.notifyOutdatedBundledCompilerIfNecessary
|
||||||
import org.jetbrains.kotlin.idea.configuration.ui.notifications.notifyKotlinStyleUpdateIfNeeded
|
import org.jetbrains.kotlin.idea.configuration.ui.notifications.notifyKotlinStyleUpdateIfNeeded
|
||||||
import org.jetbrains.kotlin.idea.project.getAndCacheLanguageLevelByDependencies
|
import org.jetbrains.kotlin.idea.project.getAndCacheLanguageLevelByDependencies
|
||||||
@@ -74,16 +77,33 @@ class KotlinConfigurationCheckerService(val project: Project) {
|
|||||||
|
|
||||||
val totalModules = modules.size
|
val totalModules = modules.size
|
||||||
|
|
||||||
for ((index, module) in modules.withIndex()) {
|
project.runReadActionInSmartMode {
|
||||||
indicator.fraction = index * 1.0 / totalModules
|
val facetSettingsProvider = KotlinFacetSettingsProvider.getInstance(project) ?: return@runReadActionInSmartMode
|
||||||
|
|
||||||
val anyKotlinFileInModule = project.runReadActionInSmartMode {
|
var referenceModuleWithUseProjectSettings: Module? = null
|
||||||
!project.isDisposed && !module.isDisposed
|
val filteredModules = modules.withIndex().filter {
|
||||||
&& FileTypeIndex.containsFileOfType(KotlinFileType.INSTANCE, module.getModuleScope(true))
|
indicator.checkCanceled()
|
||||||
|
indicator.fraction = (it.index / (2.0 * totalModules))
|
||||||
|
val facetSettings = facetSettingsProvider.getInitializedSettings(it.value)
|
||||||
|
val useProjectSettings = facetSettings.useProjectSettings
|
||||||
|
if (useProjectSettings) {
|
||||||
|
referenceModuleWithUseProjectSettings = it.value
|
||||||
|
}
|
||||||
|
!useProjectSettings
|
||||||
}
|
}
|
||||||
if (anyKotlinFileInModule) {
|
|
||||||
indicator.text2 = KotlinJvmBundle.message("configure.kotlin.language.settings.0.module", module.name)
|
referenceModuleWithUseProjectSettings?.getAndCacheLanguageLevelByDependencies()
|
||||||
runReadAction {
|
|
||||||
|
for ((index, module) in filteredModules) {
|
||||||
|
indicator.checkCanceled()
|
||||||
|
indicator.fraction = 0.5 + (index / (2.0 * filteredModules.size))
|
||||||
|
|
||||||
|
val anyKotlinFileInModule =
|
||||||
|
!project.isDisposed && !module.isDisposed
|
||||||
|
&& FileTypeIndex.containsFileOfType(KotlinFileType.INSTANCE, module.getModuleScope(true))
|
||||||
|
|
||||||
|
if (anyKotlinFileInModule) {
|
||||||
|
indicator.text2 = KotlinJvmBundle.message("configure.kotlin.language.settings.0.module", module.name)
|
||||||
module.getAndCacheLanguageLevelByDependencies()
|
module.getAndCacheLanguageLevelByDependencies()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user