[Analysis API] move ClsKotlinBinaryClassCache/FileAttributeService service registration to StandaloneProjectFactory

This commit is contained in:
Ilya Kirillov
2023-05-15 13:39:35 +02:00
committed by Space Team
parent fbcf73eb42
commit 78f09409b7
8 changed files with 27 additions and 30 deletions
@@ -5,22 +5,10 @@
package org.jetbrains.kotlin.analysis.api.impl.base.test.configurators package org.jetbrains.kotlin.analysis.api.impl.base.test.configurators
import com.intellij.ide.highlighter.JavaClassFileType
import com.intellij.mock.MockApplication import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject import com.intellij.mock.MockProject
import com.intellij.openapi.extensions.LoadingOrder
import com.intellij.psi.ClassFileViewProviderFactory
import com.intellij.psi.FileTypeFileViewProviders
import com.intellij.psi.compiled.ClassFileDecompilers
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInDecompiler
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinClassFileDecompiler
import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache
import org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService
import org.jetbrains.kotlin.analysis.decompiler.stub.files.DummyFileAttributeService
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestServiceRegistrar import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestServiceRegistrar
import org.jetbrains.kotlin.test.TestInfrastructureInternals
import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.analysis.test.framework.services.disposableProvider
object AnalysisApiDecompiledCodeTestServiceRegistrar : AnalysisApiTestServiceRegistrar() { object AnalysisApiDecompiledCodeTestServiceRegistrar : AnalysisApiTestServiceRegistrar() {
@@ -34,9 +22,5 @@ object AnalysisApiDecompiledCodeTestServiceRegistrar : AnalysisApiTestServiceReg
} }
override fun registerApplicationServices(application: MockApplication, testServices: TestServices) { override fun registerApplicationServices(application: MockApplication, testServices: TestServices) {
application.apply {
registerService(ClsKotlinBinaryClassCache::class.java)
registerService(FileAttributeService::class.java, DummyFileAttributeService)
}
} }
} }
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInDecompiler
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinClassFileDecompiler import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinClassFileDecompiler
import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache
import org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService import org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService
import org.jetbrains.kotlin.analysis.decompiler.stub.files.DummyFileAttributeService
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestServiceRegistrar import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestServiceRegistrar
import org.jetbrains.kotlin.test.TestInfrastructureInternals import org.jetbrains.kotlin.test.TestInfrastructureInternals
import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.TestServices
@@ -34,6 +34,9 @@ import org.jetbrains.kotlin.light.classes.symbol.SymbolKotlinAsJavaSupport
@OptIn(LLFirInternals::class, KtAnalysisApiInternals::class) @OptIn(LLFirInternals::class, KtAnalysisApiInternals::class)
object FirStandaloneServiceRegistrar : AnalysisApiStandaloneServiceRegistrar { object FirStandaloneServiceRegistrar : AnalysisApiStandaloneServiceRegistrar {
override fun registerApplicationServices(application: MockApplication) { override fun registerApplicationServices(application: MockApplication) {
application.apply {
}
} }
override fun registerProjectExtensionPoints(project: MockProject) { override fun registerProjectExtensionPoints(project: MockProject) {
@@ -8,6 +8,7 @@ dependencies {
implementation(kotlinStdlib()) implementation(kotlinStdlib())
implementation(project(":compiler:psi")) implementation(project(":compiler:psi"))
implementation(project(":analysis:analysis-api-impl-base")) implementation(project(":analysis:analysis-api-impl-base"))
implementation(project(":analysis:decompiled:decompiler-to-file-stubs"))
api(project(":compiler:cli-base")) api(project(":compiler:cli-base"))
api(project(":analysis:analysis-api")) api(project(":analysis:analysis-api"))
api(project(":analysis:analysis-api-impl-base")) api(project(":analysis:analysis-api-impl-base"))
@@ -29,6 +29,9 @@ import com.intellij.util.io.URLUtil.JAR_SEPARATOR
import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService
import org.jetbrains.kotlin.analysis.api.impl.base.java.source.JavaElementSourceWithSmartPointerFactory import org.jetbrains.kotlin.analysis.api.impl.base.java.source.JavaElementSourceWithSmartPointerFactory
import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionProvider import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionProvider
import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache
import org.jetbrains.kotlin.analysis.decompiler.stub.file.DummyFileAttributeService
import org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService
import org.jetbrains.kotlin.analysis.project.structure.* import org.jetbrains.kotlin.analysis.project.structure.*
import org.jetbrains.kotlin.analysis.providers.impl.KotlinFakeClsStubsCache import org.jetbrains.kotlin.analysis.providers.impl.KotlinFakeClsStubsCache
import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.MessageCollector
@@ -82,7 +85,9 @@ object StandaloneProjectFactory {
return return
} }
application.apply { application.apply {
registerService(KotlinFakeClsStubsCache::class.java, KotlinFakeClsStubsCache()) registerService(KotlinFakeClsStubsCache::class.java, KotlinFakeClsStubsCache::class.java)
registerService(ClsKotlinBinaryClassCache::class.java)
registerService(FileAttributeService::class.java, DummyFileAttributeService::class.java)
} }
} }
} }
@@ -28,3 +28,16 @@ interface FileAttributeService {
fun <T> read(file: VirtualFile, id: String, readValueFun: (DataInput) -> T): CachedAttributeData<T>? fun <T> read(file: VirtualFile, id: String, readValueFun: (DataInput) -> T): CachedAttributeData<T>?
} }
class DummyFileAttributeService : FileAttributeService {
override fun <T> write(file: VirtualFile, id: String, value: T, writeValueFun: (DataOutput, T) -> Unit): CachedAttributeData<T> {
return CachedAttributeData(value, 0)
}
override fun <T> read(file: VirtualFile, id: String, readValueFun: (DataInput) -> T): CachedAttributeData<T>? {
return null
}
}
@@ -11,6 +11,7 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
import org.jetbrains.kotlin.analysis.decompiler.stub.file.CachedAttributeData import org.jetbrains.kotlin.analysis.decompiler.stub.file.CachedAttributeData
import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache
import org.jetbrains.kotlin.analysis.decompiler.stub.file.DummyFileAttributeService
import org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService import org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.test.* import org.jetbrains.kotlin.test.*
@@ -42,7 +43,7 @@ abstract class AbstractDecompiledClassTest : KotlinTestWithEnvironment() {
private fun CoreApplicationEnvironment.registerApplicationServices() { private fun CoreApplicationEnvironment.registerApplicationServices() {
if (application.getService(FileAttributeService::class.java) == null) { if (application.getService(FileAttributeService::class.java) == null) {
registerApplicationService(FileAttributeService::class.java, DummyFileAttributeService) registerApplicationService(FileAttributeService::class.java, DummyFileAttributeService())
registerApplicationService(ClsKotlinBinaryClassCache::class.java, ClsKotlinBinaryClassCache()) registerApplicationService(ClsKotlinBinaryClassCache::class.java, ClsKotlinBinaryClassCache())
} }
} }
@@ -112,12 +113,3 @@ internal data class TestData(
} }
} }
object DummyFileAttributeService : FileAttributeService {
override fun <T> write(file: VirtualFile, id: String, value: T, writeValueFun: (DataOutput, T) -> Unit): CachedAttributeData<T> {
return CachedAttributeData(value, 0)
}
override fun <T> read(file: VirtualFile, id: String, readValueFun: (DataInput) -> T): CachedAttributeData<T>? {
return null
}
}
@@ -12,8 +12,8 @@ import com.intellij.util.indexing.FileContentImpl
import junit.framework.TestCase import junit.framework.TestCase
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinClassFileDecompiler import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinClassFileDecompiler
import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache
import org.jetbrains.kotlin.analysis.decompiler.stub.file.DummyFileAttributeService
import org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService import org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService
import org.jetbrains.kotlin.analysis.decompiler.stub.files.DummyFileAttributeService
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.psi.stubs.KotlinClassStub import org.jetbrains.kotlin.psi.stubs.KotlinClassStub
import org.jetbrains.kotlin.scripting.compiler.plugin.impl.KJvmCompiledModuleInMemoryImpl import org.jetbrains.kotlin.scripting.compiler.plugin.impl.KJvmCompiledModuleInMemoryImpl
@@ -68,7 +68,7 @@ class JvmReplIdeTest : TestCase() {
} }
private fun registerDecompilerServices(application: MockApplication) { private fun registerDecompilerServices(application: MockApplication) {
application.registerService(FileAttributeService::class.java, DummyFileAttributeService) application.registerService(FileAttributeService::class.java, DummyFileAttributeService())
application.registerService(ClsKotlinBinaryClassCache::class.java, ClsKotlinBinaryClassCache()) application.registerService(ClsKotlinBinaryClassCache::class.java, ClsKotlinBinaryClassCache())
} }
} }