Do not resolve services in non-default ctors

This commit is contained in:
Vladimir Dolzhenko
2019-09-24 09:11:20 +02:00
parent 0e1e1e350f
commit 8b0aeb9a55
5 changed files with 15 additions and 15 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.idea.caches.resolve
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiManager
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
@@ -20,8 +21,8 @@ import org.jetbrains.kotlin.psi.KtFileClassProvider
import org.jetbrains.kotlin.psi.analysisContext
import org.jetbrains.kotlin.platform.jvm.isJvm
class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
KtFileClassProvider {
class KtFileClassProviderImpl(val project: Project) : KtFileClassProvider {
override fun getFileClasses(file: KtFile): Array<PsiClass> {
if (file.project.isInDumbMode()) {
return PsiClass.EMPTY_ARRAY
@@ -45,6 +46,8 @@ class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
val jvmClassInfo = JvmFileClassUtil.getFileClassInfoNoResolve(file)
val fileClassFqName = file.javaFileFacadeFqName
val kotlinAsJavaSupport = KotlinAsJavaSupport.getInstance(project)
val facadeClasses = when {
file.analysisContext != null && file.hasTopLevelCallables() ->
listOf(
@@ -11,10 +11,10 @@ import com.intellij.psi.util.PsiModificationTracker
import org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService
import org.jetbrains.kotlin.psi.KtFile
class KotlinIDEModificationTrackerService(project: Project, psiModificationTracker: PsiModificationTracker) :
class KotlinIDEModificationTrackerService(project: Project) :
KotlinModificationTrackerService() {
override val modificationTracker: ModificationTracker = psiModificationTracker
override val modificationTracker: ModificationTracker = PsiModificationTracker.SERVICE.getInstance(project)
override val outOfBlockModificationTracker: ModificationTracker =
KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker
@@ -38,10 +38,7 @@ import kotlin.script.experimental.api.makeFailureResult
// NOTE: this service exists exclusively because ScriptDependencyManager
// cannot be registered as implementing two services (state would be duplicated)
class IdeScriptDependenciesProvider(
private val scriptConfigurationManager: ScriptConfigurationManager,
project: Project
) : ScriptDependenciesProvider(project) {
class IdeScriptDependenciesProvider(project: Project) : ScriptDependenciesProvider(project) {
override fun getScriptConfigurationResult(file: KtFile): ScriptCompilationConfigurationResult? {
val configuration = getScriptConfiguration(file)
val reports = IdeScriptReportSink.getReports(file)
@@ -52,7 +49,7 @@ class IdeScriptDependenciesProvider(
}
override fun getScriptConfiguration(file: KtFile): ScriptCompilationConfigurationWrapper? {
return scriptConfigurationManager.getConfiguration(file)
return ScriptConfigurationManager.getInstance(project).getConfiguration(file)
}
}
@@ -22,6 +22,7 @@ import com.intellij.openapi.extensions.PluginId
import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.progress.ProgressManager
import com.intellij.openapi.progress.Task
import com.intellij.openapi.project.Project
import com.intellij.openapi.updateSettings.impl.PluginDownloader
import com.intellij.openapi.updateSettings.impl.UpdateSettings
import com.intellij.openapi.util.JDOMUtil
@@ -86,7 +87,7 @@ sealed class PluginUpdateStatus {
}
}
class KotlinPluginUpdater(private val propertiesComponent: PropertiesComponent) : Disposable {
class KotlinPluginUpdater : Disposable {
private var updateDelay = INITIAL_UPDATE_DELAY
private val alarm = Alarm(Alarm.ThreadToUse.POOLED_THREAD, this)
private val notificationGroup = NotificationGroup("Kotlin plugin updates", NotificationDisplayType.STICKY_BALLOON, true)
@@ -101,7 +102,7 @@ class KotlinPluginUpdater(private val propertiesComponent: PropertiesComponent)
if (ApplicationManager.getApplication().isUnitTestMode || ApplicationManager.getApplication().isHeadlessEnvironment) return
if (!UpdateSettings.getInstance().isCheckNeeded) return
val lastUpdateTime = java.lang.Long.parseLong(propertiesComponent.getValue(PROPERTY_NAME, "0"))
val lastUpdateTime = java.lang.Long.parseLong(PropertiesComponent.getInstance().getValue(PROPERTY_NAME, "0"))
if (lastUpdateTime == 0L || System.currentTimeMillis() - lastUpdateTime > CACHED_REQUEST_DELAY) {
queueUpdateCheck { updateStatus ->
when (updateStatus) {
@@ -233,7 +234,7 @@ class KotlinPluginUpdater(private val propertiesComponent: PropertiesComponent)
}
private fun recordSuccessfulUpdateCheck() {
propertiesComponent.setValue(PROPERTY_NAME, System.currentTimeMillis().toString())
PropertiesComponent.getInstance().setValue(PROPERTY_NAME, System.currentTimeMillis().toString())
updateDelay = INITIAL_UPDATE_DELAY
}
@@ -30,8 +30,7 @@ import kotlin.script.experimental.host.ScriptingHostConfiguration
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
class ScriptTemplatesFromCompilerSettingsProvider(
private val project: Project,
private val compilerSettings: KotlinCompilerSettings
private val project: Project
) : ScriptDefinitionSourceAsContributor {
init {
@@ -46,7 +45,7 @@ class ScriptTemplatesFromCompilerSettingsProvider(
override val definitions: Sequence<ScriptDefinition>
get() {
val kotlinSettings = compilerSettings.settings
val kotlinSettings = KotlinCompilerSettings.getInstance(project).settings
return if (kotlinSettings.scriptTemplates.isBlank()) emptySequence()
else loadDefinitionsFromTemplates(
templateClassNames = kotlinSettings.scriptTemplates.split(',', ' '),