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}" +
+ ")"
+ )
+ }
+}