diff --git a/plugins/kotlin/base/fe10/analysis/kotlin.base.fe10.analysis.iml b/plugins/kotlin/base/fe10/analysis/kotlin.base.fe10.analysis.iml index 4da7bdf6120d..2f5c3788acf5 100644 --- a/plugins/kotlin/base/fe10/analysis/kotlin.base.fe10.analysis.iml +++ b/plugins/kotlin/base/fe10/analysis/kotlin.base.fe10.analysis.iml @@ -32,5 +32,6 @@ + \ No newline at end of file diff --git a/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/caches/resolve/KotlinCacheService.kt b/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/caches/resolve/KotlinCacheService.kt index 37f9704efd35..a398dcb90769 100644 --- a/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/caches/resolve/KotlinCacheService.kt +++ b/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/caches/resolve/KotlinCacheService.kt @@ -2,7 +2,6 @@ package org.jetbrains.kotlin.caches.resolve -import com.intellij.openapi.components.service import com.intellij.openapi.project.Project import com.intellij.psi.PsiFile import org.jetbrains.kotlin.analyzer.ModuleInfo @@ -11,10 +10,11 @@ import org.jetbrains.kotlin.idea.resolve.ResolutionFacade import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache +import org.jetbrains.kotlin.util.k1Service interface KotlinCacheService { companion object { - fun getInstance(project: Project): KotlinCacheService = project.service() + fun getInstance(project: Project): KotlinCacheService = project.k1Service() } /** diff --git a/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/util/services.kt b/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/util/services.kt new file mode 100644 index 000000000000..d2dcbf64c99c --- /dev/null +++ b/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/util/services.kt @@ -0,0 +1,23 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.kotlin.util + +import com.intellij.openapi.components.ComponentManager +import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider + +inline fun ComponentManager.k1Service(): T { + val serviceClass = T::class.java + getService(serviceClass)?.let { return it } + + val name = serviceClass.name + throw if (KotlinPluginModeProvider.isK2Mode()) { + IllegalStateException("$name should not be used for the K2 mode. See https://kotl.in/analysis-api/ for the migration.") + } else { + IllegalStateException( + "Cannot find service $name (" + + "classloader=${serviceClass.classLoader}, " + + "serviceContainer=$this, " + + "serviceContainerClass=${this::class.java.name}" + + ")" + ) + } +}