diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesResolveScopeProvider.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesResolveScopeProvider.kt index 3e7dba5917a..67e200ef24c 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesResolveScopeProvider.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesResolveScopeProvider.kt @@ -23,9 +23,12 @@ import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.idea.caches.project.ScriptDependenciesInfo import org.jetbrains.kotlin.idea.caches.project.ScriptDependenciesSourceInfo import org.jetbrains.kotlin.idea.caches.project.getModuleInfoByVirtualFile +import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager class ScriptDependenciesResolveScopeProvider : ResolveScopeProvider() { override fun getResolveScope(file: VirtualFile, project: Project): GlobalSearchScope? { + if (ScriptDependenciesManager.getInstance(project).getAllScriptsDependenciesClassFiles().isEmpty()) return null + val moduleInfo = getModuleInfoByVirtualFile(project, file) ?: return null val scriptDependenciesModuleInfo = (moduleInfo as? ScriptDependenciesInfo) ?: (moduleInfo as? ScriptDependenciesSourceInfo)?.binariesModuleInfo diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/NewCodeStyleNotification.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/NewCodeStyleNotification.kt index f5d83fc2359..83d7c414000 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/NewCodeStyleNotification.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/NewCodeStyleNotification.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.idea.configuration.ui.notifications +import com.intellij.facet.ProjectFacetManager import com.intellij.ide.util.PropertiesComponent import com.intellij.notification.* import com.intellij.openapi.actionSystem.AnActionEvent @@ -13,6 +14,7 @@ import com.intellij.openapi.application.runWriteAction import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.project.Project import com.intellij.psi.codeStyle.CodeStyleSettingsManager +import org.jetbrains.kotlin.idea.facet.KotlinFacetType import org.jetbrains.kotlin.idea.formatter.* import org.jetbrains.kotlin.idea.util.isDefaultOfficialCodeStyle @@ -20,6 +22,8 @@ private const val KOTLIN_UPDATE_CODE_STYLE_GROUP_ID = "Update Kotlin code style" private const val KOTLIN_UPDATE_CODE_STYLE_PROPERTY_NAME = "update.kotlin.code.style.notified" fun notifyKotlinStyleUpdateIfNeeded(project: Project) { + val modulesWithFacet = ProjectFacetManager.getInstance(project).getModulesWithFacet(KotlinFacetType.TYPE_ID) + if (modulesWithFacet.isEmpty()) return if (!isDefaultOfficialCodeStyle) return val isProjectSettings = CodeStyleSettingsManager.getInstance(project).USE_PER_PROJECT_SETTINGS diff --git a/idea/src/org/jetbrains/kotlin/idea/CommonModuleResolveScopeEnlarger.kt b/idea/src/org/jetbrains/kotlin/idea/CommonModuleResolveScopeEnlarger.kt index e6983e6bfaf..754dd641ebb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/CommonModuleResolveScopeEnlarger.kt +++ b/idea/src/org/jetbrains/kotlin/idea/CommonModuleResolveScopeEnlarger.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.idea +import com.intellij.facet.ProjectFacetManager import com.intellij.openapi.project.Project import com.intellij.openapi.roots.JdkOrderEntry import com.intellij.openapi.roots.ModuleRootManager @@ -16,6 +17,7 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.SearchScope import org.jetbrains.kotlin.idea.caches.project.implementingModules import org.jetbrains.kotlin.idea.core.isInTestSourceContentKotlinAware +import org.jetbrains.kotlin.idea.facet.KotlinFacetType import org.jetbrains.kotlin.idea.project.platform import org.jetbrains.kotlin.idea.util.isInSourceContentWithoutInjected import org.jetbrains.kotlin.platform.isCommon @@ -23,6 +25,8 @@ import org.jetbrains.kotlin.platform.jvm.isJvm class CommonModuleResolveScopeEnlarger : ResolveScopeEnlarger() { override fun getAdditionalResolveScope(file: VirtualFile, project: Project): SearchScope? { + val modulesWithFacet = ProjectFacetManager.getInstance(project).getModulesWithFacet(KotlinFacetType.TYPE_ID) + if (modulesWithFacet.isEmpty()) return null val module = ProjectFileIndex.getInstance(project).getModuleForFile(file) ?: return null if (!module.platform.isCommon()) return null diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/CreateKotlinSdkActivity.kt b/idea/src/org/jetbrains/kotlin/idea/framework/CreateKotlinSdkActivity.kt index ec60deae681..74b15e2c3e1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/framework/CreateKotlinSdkActivity.kt +++ b/idea/src/org/jetbrains/kotlin/idea/framework/CreateKotlinSdkActivity.kt @@ -5,13 +5,15 @@ package org.jetbrains.kotlin.idea.framework +import com.intellij.facet.ProjectFacetManager import com.intellij.openapi.project.DumbAware import com.intellij.openapi.project.Project import com.intellij.openapi.startup.StartupActivity +import org.jetbrains.kotlin.idea.facet.KotlinFacetType import org.jetbrains.kotlin.idea.project.platform -import org.jetbrains.kotlin.idea.util.projectStructure.allModules import org.jetbrains.kotlin.platform.isCommon import org.jetbrains.kotlin.platform.js.isJs +import org.jetbrains.kotlin.platform.konan.isNative /** * This StartupActivity creates KotlinSdk for projects containing non-jvm modules. @@ -21,11 +23,14 @@ import org.jetbrains.kotlin.platform.js.isJs class CreateKotlinSdkActivity : StartupActivity, DumbAware { override fun runActivity(project: Project) { - val kotlinSdkIsRequired = project.allModules().any { - it.platform.isJs() || it.platform.isCommon() - } - if (kotlinSdkIsRequired) { - KotlinSdkType.setUpIfNeeded() + val modulesWithFacet = ProjectFacetManager.getInstance(project).getModulesWithFacet(KotlinFacetType.TYPE_ID) + if (modulesWithFacet.isNotEmpty()) { + KotlinSdkType.setUpIfNeeded { + modulesWithFacet.any { + val platform = it.platform + platform.isJs() || platform.isNative() || platform.isCommon() + } + } } } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt b/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt index d2b00ce9989..e93179adbd4 100644 --- a/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt +++ b/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt @@ -30,10 +30,12 @@ class KotlinSdkType : SdkType("KotlinSDK") { val defaultHomePath: String get() = PathUtil.kotlinPathsForIdeaPlugin.homePath.absolutePath - fun setUpIfNeeded() { + @JvmOverloads + fun setUpIfNeeded(checkIfNeeded: () -> Boolean = { true }) { with(ProjectSdksModel()) { reset(null) if (sdks.any { it.sdkType is KotlinSdkType }) return + if (!checkIfNeeded()) return //do not create Kotlin SDK addSdk(INSTANCE, defaultHomePath, null) ApplicationManager.getApplication().invokeAndWait { runWriteAction { apply(null, true) } diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/TargetRetrieveActivity.kt b/idea/src/org/jetbrains/kotlin/idea/framework/TargetRetrieveActivity.kt index 8db0e3148b8..73e705ebf92 100644 --- a/idea/src/org/jetbrains/kotlin/idea/framework/TargetRetrieveActivity.kt +++ b/idea/src/org/jetbrains/kotlin/idea/framework/TargetRetrieveActivity.kt @@ -5,10 +5,12 @@ package org.jetbrains.kotlin.idea.framework +import com.intellij.facet.ProjectFacetManager import com.intellij.openapi.project.Project import com.intellij.openapi.startup.StartupActivity import org.jetbrains.kotlin.idea.configuration.BuildSystemType import org.jetbrains.kotlin.idea.configuration.getBuildSystemType +import org.jetbrains.kotlin.idea.facet.KotlinFacetType import org.jetbrains.kotlin.idea.project.platform import org.jetbrains.kotlin.idea.statistics.FUSEventGroups import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger @@ -21,27 +23,32 @@ import org.jetbrains.kotlin.platform.konan.isNative class TargetRetrieveActivity : StartupActivity { override fun runActivity(project: Project) { - project.allModules().forEach { - val buildSystem = it.getBuildSystemType() - // TODO(dsavvinov): review that - val platform = when { - it.platform.isJvm() -> "jvm" - it.platform.isJs() -> "js" - it.platform.isCommon() -> "common" - it.platform.isNative() -> "native" - else -> "unknown" - } - when { - buildSystem == BuildSystemType.JPS -> - KotlinFUSLogger.log( - FUSEventGroups.JPSTarget, - platform - ) - buildSystem.toString().toLowerCase().contains("maven") -> - KotlinFUSLogger.log( - FUSEventGroups.MavenTarget, - platform - ) + //todo: log later to avoid loading during startup + + val modulesWithFacet = ProjectFacetManager.getInstance(project).getModulesWithFacet(KotlinFacetType.TYPE_ID) + if (modulesWithFacet.isNotEmpty()) { + modulesWithFacet.forEach { + val buildSystem = it.getBuildSystemType() + // TODO(dsavvinov): review that + val platform = when { + it.platform.isJvm() -> "jvm" + it.platform.isJs() -> "js" + it.platform.isCommon() -> "common" + it.platform.isNative() -> "native" + else -> "unknown" + } + when { + buildSystem == BuildSystemType.JPS -> + KotlinFUSLogger.log( + FUSEventGroups.JPSTarget, + platform + ) + buildSystem.toString().toLowerCase().contains("maven") -> + KotlinFUSLogger.log( + FUSEventGroups.MavenTarget, + platform + ) + } } } }