Do not resolve services in non-default ctors
This commit is contained in:
+5
-2
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.caches.resolve
|
package org.jetbrains.kotlin.idea.caches.resolve
|
||||||
|
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.PsiClass
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
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.psi.analysisContext
|
||||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
|
|
||||||
class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
|
class KtFileClassProviderImpl(val project: Project) : KtFileClassProvider {
|
||||||
KtFileClassProvider {
|
|
||||||
override fun getFileClasses(file: KtFile): Array<PsiClass> {
|
override fun getFileClasses(file: KtFile): Array<PsiClass> {
|
||||||
if (file.project.isInDumbMode()) {
|
if (file.project.isInDumbMode()) {
|
||||||
return PsiClass.EMPTY_ARRAY
|
return PsiClass.EMPTY_ARRAY
|
||||||
@@ -45,6 +46,8 @@ class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
|
|||||||
val jvmClassInfo = JvmFileClassUtil.getFileClassInfoNoResolve(file)
|
val jvmClassInfo = JvmFileClassUtil.getFileClassInfoNoResolve(file)
|
||||||
val fileClassFqName = file.javaFileFacadeFqName
|
val fileClassFqName = file.javaFileFacadeFqName
|
||||||
|
|
||||||
|
val kotlinAsJavaSupport = KotlinAsJavaSupport.getInstance(project)
|
||||||
|
|
||||||
val facadeClasses = when {
|
val facadeClasses = when {
|
||||||
file.analysisContext != null && file.hasTopLevelCallables() ->
|
file.analysisContext != null && file.hasTopLevelCallables() ->
|
||||||
listOf(
|
listOf(
|
||||||
|
|||||||
+2
-2
@@ -11,10 +11,10 @@ import com.intellij.psi.util.PsiModificationTracker
|
|||||||
import org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService
|
import org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
|
||||||
class KotlinIDEModificationTrackerService(project: Project, psiModificationTracker: PsiModificationTracker) :
|
class KotlinIDEModificationTrackerService(project: Project) :
|
||||||
KotlinModificationTrackerService() {
|
KotlinModificationTrackerService() {
|
||||||
|
|
||||||
override val modificationTracker: ModificationTracker = psiModificationTracker
|
override val modificationTracker: ModificationTracker = PsiModificationTracker.SERVICE.getInstance(project)
|
||||||
|
|
||||||
override val outOfBlockModificationTracker: ModificationTracker =
|
override val outOfBlockModificationTracker: ModificationTracker =
|
||||||
KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker
|
KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker
|
||||||
|
|||||||
+2
-5
@@ -38,10 +38,7 @@ import kotlin.script.experimental.api.makeFailureResult
|
|||||||
|
|
||||||
// NOTE: this service exists exclusively because ScriptDependencyManager
|
// NOTE: this service exists exclusively because ScriptDependencyManager
|
||||||
// cannot be registered as implementing two services (state would be duplicated)
|
// cannot be registered as implementing two services (state would be duplicated)
|
||||||
class IdeScriptDependenciesProvider(
|
class IdeScriptDependenciesProvider(project: Project) : ScriptDependenciesProvider(project) {
|
||||||
private val scriptConfigurationManager: ScriptConfigurationManager,
|
|
||||||
project: Project
|
|
||||||
) : ScriptDependenciesProvider(project) {
|
|
||||||
override fun getScriptConfigurationResult(file: KtFile): ScriptCompilationConfigurationResult? {
|
override fun getScriptConfigurationResult(file: KtFile): ScriptCompilationConfigurationResult? {
|
||||||
val configuration = getScriptConfiguration(file)
|
val configuration = getScriptConfiguration(file)
|
||||||
val reports = IdeScriptReportSink.getReports(file)
|
val reports = IdeScriptReportSink.getReports(file)
|
||||||
@@ -52,7 +49,7 @@ class IdeScriptDependenciesProvider(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getScriptConfiguration(file: KtFile): ScriptCompilationConfigurationWrapper? {
|
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.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
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.updateSettings.impl.PluginDownloader
|
import com.intellij.openapi.updateSettings.impl.PluginDownloader
|
||||||
import com.intellij.openapi.updateSettings.impl.UpdateSettings
|
import com.intellij.openapi.updateSettings.impl.UpdateSettings
|
||||||
import com.intellij.openapi.util.JDOMUtil
|
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 var updateDelay = INITIAL_UPDATE_DELAY
|
||||||
private val alarm = Alarm(Alarm.ThreadToUse.POOLED_THREAD, this)
|
private val alarm = Alarm(Alarm.ThreadToUse.POOLED_THREAD, this)
|
||||||
private val notificationGroup = NotificationGroup("Kotlin plugin updates", NotificationDisplayType.STICKY_BALLOON, true)
|
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 (ApplicationManager.getApplication().isUnitTestMode || ApplicationManager.getApplication().isHeadlessEnvironment) return
|
||||||
if (!UpdateSettings.getInstance().isCheckNeeded) 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) {
|
if (lastUpdateTime == 0L || System.currentTimeMillis() - lastUpdateTime > CACHED_REQUEST_DELAY) {
|
||||||
queueUpdateCheck { updateStatus ->
|
queueUpdateCheck { updateStatus ->
|
||||||
when (updateStatus) {
|
when (updateStatus) {
|
||||||
@@ -233,7 +234,7 @@ class KotlinPluginUpdater(private val propertiesComponent: PropertiesComponent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun recordSuccessfulUpdateCheck() {
|
private fun recordSuccessfulUpdateCheck() {
|
||||||
propertiesComponent.setValue(PROPERTY_NAME, System.currentTimeMillis().toString())
|
PropertiesComponent.getInstance().setValue(PROPERTY_NAME, System.currentTimeMillis().toString())
|
||||||
updateDelay = INITIAL_UPDATE_DELAY
|
updateDelay = INITIAL_UPDATE_DELAY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ import kotlin.script.experimental.host.ScriptingHostConfiguration
|
|||||||
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
|
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
|
||||||
|
|
||||||
class ScriptTemplatesFromCompilerSettingsProvider(
|
class ScriptTemplatesFromCompilerSettingsProvider(
|
||||||
private val project: Project,
|
private val project: Project
|
||||||
private val compilerSettings: KotlinCompilerSettings
|
|
||||||
) : ScriptDefinitionSourceAsContributor {
|
) : ScriptDefinitionSourceAsContributor {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@@ -46,7 +45,7 @@ class ScriptTemplatesFromCompilerSettingsProvider(
|
|||||||
|
|
||||||
override val definitions: Sequence<ScriptDefinition>
|
override val definitions: Sequence<ScriptDefinition>
|
||||||
get() {
|
get() {
|
||||||
val kotlinSettings = compilerSettings.settings
|
val kotlinSettings = KotlinCompilerSettings.getInstance(project).settings
|
||||||
return if (kotlinSettings.scriptTemplates.isBlank()) emptySequence()
|
return if (kotlinSettings.scriptTemplates.isBlank()) emptySequence()
|
||||||
else loadDefinitionsFromTemplates(
|
else loadDefinitionsFromTemplates(
|
||||||
templateClassNames = kotlinSettings.scriptTemplates.split(',', ' '),
|
templateClassNames = kotlinSettings.scriptTemplates.split(',', ' '),
|
||||||
|
|||||||
Reference in New Issue
Block a user