Reorganize TypeAttributeTranslatorExtension

This commit is contained in:
Irene Dea
2021-11-23 15:46:12 -08:00
committed by Dmitriy Novozhilov
parent 19bfc43bee
commit 374d287d08
11 changed files with 39 additions and 35 deletions
@@ -50,7 +50,7 @@ import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.types.DefaultTypeAttributeTranslator
import org.jetbrains.kotlin.types.checker.NewKotlinTypeChecker
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslatorsForInjection
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslators
// This class is needed only for easier injection: exact types of needed components are specified in the constructor here.
// Otherwise injector generator is not smart enough to deduce, for example, which package fragment provider DeserializationComponents needs
@@ -66,7 +66,7 @@ class DeserializationComponentsForJava(
lookupTracker: LookupTracker,
contractDeserializer: ContractDeserializer,
kotlinTypeChecker: NewKotlinTypeChecker,
typeAttributeTranslators: TypeAttributeTranslatorsForInjection
typeAttributeTranslators: TypeAttributeTranslators
) {
val components: DeserializationComponents
@@ -193,6 +193,6 @@ fun makeDeserializationComponentsForJava(
storageManager, module, DeserializationConfiguration.Default, javaClassDataFinder,
binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider, notFoundClasses,
errorReporter, LookupTracker.DO_NOTHING, ContractDeserializer.DEFAULT, NewKotlinTypeChecker.Default,
TypeAttributeTranslatorsForInjection(listOf(DefaultTypeAttributeTranslator))
TypeAttributeTranslators(listOf(DefaultTypeAttributeTranslator))
)
}
-1
View File
@@ -10,7 +10,6 @@ dependencies {
api(project(":core:util.runtime"))
api(kotlinStdlib())
api(project(":kotlin-annotations-jvm"))
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
}
sourceSets {
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.types
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.name.FqName
interface TypeAttributeTranslator {
fun toAttributes(
@@ -5,23 +5,11 @@
package org.jetbrains.kotlin.types.extensions
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
import org.jetbrains.kotlin.types.*
interface TypeAttributeTranslatorExtension : TypeAttributeTranslator
class TypeAttributeTranslatorsForInjection(project: Project) {
val translators: List<TypeAttributeTranslator> = TypeAttributeTranslators(project).translators
}
class TypeAttributeTranslators private constructor(val translators: List<TypeAttributeTranslator>) {
constructor(project: Project) : this(getInstances(project) + DefaultTypeAttributeTranslator)
class TypeAttributeTranslators(val translators: List<TypeAttributeTranslator>) {
fun toAttributes(
annotations: Annotations,
typeConstructor: TypeConstructor,
@@ -39,12 +27,4 @@ class TypeAttributeTranslators private constructor(val translators: List<TypeAtt
}.flatten()
return Annotations.create(translated)
}
companion object :
ProjectExtensionDescriptor<TypeAttributeTranslatorExtension>(
"org.jetbrains.kotlin.extensions.typeAttribute",
TypeAttributeTranslatorExtension::class.java
) {
val Default = TypeAttributeTranslators(listOf(DefaultTypeAttributeTranslator))
}
}
@@ -34,8 +34,8 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPackageMemberScope
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslatorsForInjection
import org.jetbrains.kotlin.types.checker.NewKotlinTypeChecker
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslators
import java.io.InputStream
class MetadataPackageFragmentProvider(
@@ -47,7 +47,7 @@ class MetadataPackageFragmentProvider(
contractDeserializer: ContractDeserializer,
kotlinTypeChecker: NewKotlinTypeChecker,
samConversionResolver: SamConversionResolver,
typeAttributeTranslators: TypeAttributeTranslatorsForInjection
typeAttributeTranslators: TypeAttributeTranslators
) : AbstractDeserializedPackageFragmentProvider(storageManager, finder, moduleDescriptor) {
init {
components = DeserializationComponents(