Reorganize TypeAttributeTranslatorExtension
This commit is contained in:
committed by
Dmitriy Novozhilov
parent
19bfc43bee
commit
374d287d08
@@ -11,8 +11,8 @@
|
|||||||
<extensionPoint qualifiedName="org.jetbrains.kotlin.extensions.internal.typeResolutionInterceptorExtension"
|
<extensionPoint qualifiedName="org.jetbrains.kotlin.extensions.internal.typeResolutionInterceptorExtension"
|
||||||
interface="org.jetbrains.kotlin.extensions.internal.TypeResolutionInterceptorExtension"
|
interface="org.jetbrains.kotlin.extensions.internal.TypeResolutionInterceptorExtension"
|
||||||
area="IDEA_PROJECT"/>
|
area="IDEA_PROJECT"/>
|
||||||
<extensionPoint qualifiedName="org.jetbrains.kotlin.types.extensions.TypeAttributeTranslatorExtension"
|
<extensionPoint qualifiedName="org.jetbrains.kotlin.extensions.typeAttributeTranslatorExtension"
|
||||||
interface="org.jetbrains.kotlin.types.extensions.TypeAttributeTranslatorExtension"
|
interface="org.jetbrains.kotlin.extensions.TypeAttributeTranslatorExtension"
|
||||||
area="IDEA_PROJECT"/>
|
area="IDEA_PROJECT"/>
|
||||||
<extensionPoint qualifiedName="org.jetbrains.kotlin.diagnosticSuppressor"
|
<extensionPoint qualifiedName="org.jetbrains.kotlin.diagnosticSuppressor"
|
||||||
interface="org.jetbrains.kotlin.resolve.diagnostics.DiagnosticSuppressor"
|
interface="org.jetbrains.kotlin.resolve.diagnostics.DiagnosticSuppressor"
|
||||||
|
|||||||
@@ -103,7 +103,6 @@ import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
|||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.CliDeclarationProviderFactoryService
|
import org.jetbrains.kotlin.resolve.lazy.declarations.CliDeclarationProviderFactoryService
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
|
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
|
||||||
import org.jetbrains.kotlin.serialization.DescriptorSerializerPlugin
|
import org.jetbrains.kotlin.serialization.DescriptorSerializerPlugin
|
||||||
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslators
|
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.FileSystems
|
import java.nio.file.FileSystems
|
||||||
@@ -652,7 +651,7 @@ class KotlinCoreEnvironment private constructor(
|
|||||||
CandidateInterceptor.registerExtensionPoint(project)
|
CandidateInterceptor.registerExtensionPoint(project)
|
||||||
DescriptorSerializerPlugin.registerExtensionPoint(project)
|
DescriptorSerializerPlugin.registerExtensionPoint(project)
|
||||||
FirExtensionRegistrarAdapter.registerExtensionPoint(project)
|
FirExtensionRegistrarAdapter.registerExtensionPoint(project)
|
||||||
TypeAttributeTranslators.registerExtensionPoint(project)
|
TypeAttributeTranslatorExtension.registerExtensionPoint(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun registerExtensionsFromPlugins(project: MockProject, configuration: CompilerConfiguration) {
|
internal fun registerExtensionsFromPlugins(project: MockProject, configuration: CompilerConfiguration) {
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.container.useInstance
|
|||||||
import org.jetbrains.kotlin.context.ModuleContext
|
import org.jetbrains.kotlin.context.ModuleContext
|
||||||
import org.jetbrains.kotlin.contracts.ContractDeserializerImpl
|
import org.jetbrains.kotlin.contracts.ContractDeserializerImpl
|
||||||
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
|
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
|
||||||
|
import org.jetbrains.kotlin.extensions.TypeAttributeTranslatorExtension
|
||||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||||
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
||||||
import org.jetbrains.kotlin.incremental.components.InlineConstTracker
|
import org.jetbrains.kotlin.incremental.components.InlineConstTracker
|
||||||
@@ -48,8 +49,6 @@ import org.jetbrains.kotlin.types.checker.NewKotlinTypeCheckerImpl
|
|||||||
import org.jetbrains.kotlin.types.expressions.DeclarationScopeProviderForLocalClassifierAnalyzer
|
import org.jetbrains.kotlin.types.expressions.DeclarationScopeProviderForLocalClassifierAnalyzer
|
||||||
import org.jetbrains.kotlin.types.expressions.LocalClassDescriptorHolder
|
import org.jetbrains.kotlin.types.expressions.LocalClassDescriptorHolder
|
||||||
import org.jetbrains.kotlin.types.expressions.LocalLazyDeclarationResolver
|
import org.jetbrains.kotlin.types.expressions.LocalLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslators
|
|
||||||
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslatorsForInjection
|
|
||||||
import org.jetbrains.kotlin.util.ProgressManagerBasedCancellationChecker
|
import org.jetbrains.kotlin.util.ProgressManagerBasedCancellationChecker
|
||||||
|
|
||||||
fun StorageComponentContainer.configureModule(
|
fun StorageComponentContainer.configureModule(
|
||||||
@@ -81,7 +80,7 @@ fun StorageComponentContainer.configureModule(
|
|||||||
analyzerServices.platformConfigurator.configureModuleComponents(this)
|
analyzerServices.platformConfigurator.configureModuleComponents(this)
|
||||||
analyzerServices.platformConfigurator.configureModuleDependentCheckers(this)
|
analyzerServices.platformConfigurator.configureModuleDependentCheckers(this)
|
||||||
|
|
||||||
useImpl<TypeAttributeTranslatorsForInjection>()
|
useInstance(TypeAttributeTranslatorExtension.createTranslators(moduleContext.project))
|
||||||
|
|
||||||
for (extension in StorageComponentContainerContributor.getInstances(moduleContext.project)) {
|
for (extension in StorageComponentContainerContributor.getInstances(moduleContext.project)) {
|
||||||
extension.registerModuleComponents(this, platform, moduleContext.module)
|
extension.registerModuleComponents(this, platform, moduleContext.module)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ dependencies {
|
|||||||
api(project(":compiler:util"))
|
api(project(":compiler:util"))
|
||||||
api(project(":core:descriptors"))
|
api(project(":core:descriptors"))
|
||||||
api(project(":compiler:resolution.common"))
|
api(project(":compiler:resolution.common"))
|
||||||
|
compileOnly(intellijCore())
|
||||||
compileOnly(commonDependency("org.jetbrains.intellij.deps:trove4j"))
|
compileOnly(commonDependency("org.jetbrains.intellij.deps:trove4j"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.extensions
|
||||||
|
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
|
import org.jetbrains.kotlin.types.DefaultTypeAttributeTranslator
|
||||||
|
import org.jetbrains.kotlin.types.TypeAttributeTranslator
|
||||||
|
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslators
|
||||||
|
|
||||||
|
interface TypeAttributeTranslatorExtension : TypeAttributeTranslator {
|
||||||
|
companion object : ProjectExtensionDescriptor<TypeAttributeTranslatorExtension>(
|
||||||
|
"org.jetbrains.kotlin.extensions.typeAttributeTranslatorExtension",
|
||||||
|
TypeAttributeTranslatorExtension::class.java
|
||||||
|
) {
|
||||||
|
val Default = TypeAttributeTranslators(listOf(DefaultTypeAttributeTranslator))
|
||||||
|
|
||||||
|
fun createTranslators(project: Project): TypeAttributeTranslators {
|
||||||
|
return TypeAttributeTranslators(getInstances(project) + DefaultTypeAttributeTranslator)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-1
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.config.LanguageFeature
|
|||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotated
|
import org.jetbrains.kotlin.descriptors.annotations.Annotated
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||||
|
import org.jetbrains.kotlin.extensions.TypeAttributeTranslatorExtension
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.Flags
|
import org.jetbrains.kotlin.metadata.deserialization.Flags
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement
|
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement
|
||||||
@@ -891,7 +892,7 @@ class DescriptorSerializer private constructor(
|
|||||||
else
|
else
|
||||||
createTopLevel(extension)
|
createTopLevel(extension)
|
||||||
val plugins = project?.let { DescriptorSerializerPlugin.getInstances(it) }.orEmpty()
|
val plugins = project?.let { DescriptorSerializerPlugin.getInstances(it) }.orEmpty()
|
||||||
val typeAttributeTranslators = project?.let { TypeAttributeTranslators(project) }
|
val typeAttributeTranslators = project?.let { TypeAttributeTranslatorExtension.createTranslators(it) }
|
||||||
|
|
||||||
// Calculate type parameter ids for the outer class beforehand, as it would've had happened if we were always
|
// Calculate type parameter ids for the outer class beforehand, as it would've had happened if we were always
|
||||||
// serializing outer classes before nested classes.
|
// serializing outer classes before nested classes.
|
||||||
|
|||||||
+3
-3
@@ -50,7 +50,7 @@ import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
|||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
import org.jetbrains.kotlin.types.DefaultTypeAttributeTranslator
|
import org.jetbrains.kotlin.types.DefaultTypeAttributeTranslator
|
||||||
import org.jetbrains.kotlin.types.checker.NewKotlinTypeChecker
|
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.
|
// 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
|
// 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,
|
lookupTracker: LookupTracker,
|
||||||
contractDeserializer: ContractDeserializer,
|
contractDeserializer: ContractDeserializer,
|
||||||
kotlinTypeChecker: NewKotlinTypeChecker,
|
kotlinTypeChecker: NewKotlinTypeChecker,
|
||||||
typeAttributeTranslators: TypeAttributeTranslatorsForInjection
|
typeAttributeTranslators: TypeAttributeTranslators
|
||||||
) {
|
) {
|
||||||
val components: DeserializationComponents
|
val components: DeserializationComponents
|
||||||
|
|
||||||
@@ -193,6 +193,6 @@ fun makeDeserializationComponentsForJava(
|
|||||||
storageManager, module, DeserializationConfiguration.Default, javaClassDataFinder,
|
storageManager, module, DeserializationConfiguration.Default, javaClassDataFinder,
|
||||||
binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider, notFoundClasses,
|
binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider, notFoundClasses,
|
||||||
errorReporter, LookupTracker.DO_NOTHING, ContractDeserializer.DEFAULT, NewKotlinTypeChecker.Default,
|
errorReporter, LookupTracker.DO_NOTHING, ContractDeserializer.DEFAULT, NewKotlinTypeChecker.Default,
|
||||||
TypeAttributeTranslatorsForInjection(listOf(DefaultTypeAttributeTranslator))
|
TypeAttributeTranslators(listOf(DefaultTypeAttributeTranslator))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ dependencies {
|
|||||||
api(project(":core:util.runtime"))
|
api(project(":core:util.runtime"))
|
||||||
api(kotlinStdlib())
|
api(kotlinStdlib())
|
||||||
api(project(":kotlin-annotations-jvm"))
|
api(project(":kotlin-annotations-jvm"))
|
||||||
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.types
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
interface TypeAttributeTranslator {
|
interface TypeAttributeTranslator {
|
||||||
fun toAttributes(
|
fun toAttributes(
|
||||||
|
|||||||
+1
-21
@@ -5,23 +5,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.types.extensions
|
package org.jetbrains.kotlin.types.extensions
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
|
||||||
import org.jetbrains.kotlin.types.*
|
import org.jetbrains.kotlin.types.*
|
||||||
|
|
||||||
interface TypeAttributeTranslatorExtension : TypeAttributeTranslator
|
class TypeAttributeTranslators(val translators: List<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)
|
|
||||||
|
|
||||||
|
|
||||||
fun toAttributes(
|
fun toAttributes(
|
||||||
annotations: Annotations,
|
annotations: Annotations,
|
||||||
typeConstructor: TypeConstructor,
|
typeConstructor: TypeConstructor,
|
||||||
@@ -39,12 +27,4 @@ class TypeAttributeTranslators private constructor(val translators: List<TypeAtt
|
|||||||
}.flatten()
|
}.flatten()
|
||||||
return Annotations.create(translated)
|
return Annotations.create(translated)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object :
|
|
||||||
ProjectExtensionDescriptor<TypeAttributeTranslatorExtension>(
|
|
||||||
"org.jetbrains.kotlin.extensions.typeAttribute",
|
|
||||||
TypeAttributeTranslatorExtension::class.java
|
|
||||||
) {
|
|
||||||
val Default = TypeAttributeTranslators(listOf(DefaultTypeAttributeTranslator))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -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.builtins.BuiltInSerializerProtocol
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPackageMemberScope
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPackageMemberScope
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
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.checker.NewKotlinTypeChecker
|
||||||
|
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslators
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
|
|
||||||
class MetadataPackageFragmentProvider(
|
class MetadataPackageFragmentProvider(
|
||||||
@@ -47,7 +47,7 @@ class MetadataPackageFragmentProvider(
|
|||||||
contractDeserializer: ContractDeserializer,
|
contractDeserializer: ContractDeserializer,
|
||||||
kotlinTypeChecker: NewKotlinTypeChecker,
|
kotlinTypeChecker: NewKotlinTypeChecker,
|
||||||
samConversionResolver: SamConversionResolver,
|
samConversionResolver: SamConversionResolver,
|
||||||
typeAttributeTranslators: TypeAttributeTranslatorsForInjection
|
typeAttributeTranslators: TypeAttributeTranslators
|
||||||
) : AbstractDeserializedPackageFragmentProvider(storageManager, finder, moduleDescriptor) {
|
) : AbstractDeserializedPackageFragmentProvider(storageManager, finder, moduleDescriptor) {
|
||||||
init {
|
init {
|
||||||
components = DeserializationComponents(
|
components = DeserializationComponents(
|
||||||
|
|||||||
Reference in New Issue
Block a user