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"
|
||||
interface="org.jetbrains.kotlin.extensions.internal.TypeResolutionInterceptorExtension"
|
||||
area="IDEA_PROJECT"/>
|
||||
<extensionPoint qualifiedName="org.jetbrains.kotlin.types.extensions.TypeAttributeTranslatorExtension"
|
||||
interface="org.jetbrains.kotlin.types.extensions.TypeAttributeTranslatorExtension"
|
||||
<extensionPoint qualifiedName="org.jetbrains.kotlin.extensions.typeAttributeTranslatorExtension"
|
||||
interface="org.jetbrains.kotlin.extensions.TypeAttributeTranslatorExtension"
|
||||
area="IDEA_PROJECT"/>
|
||||
<extensionPoint qualifiedName="org.jetbrains.kotlin.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.DeclarationProviderFactoryService
|
||||
import org.jetbrains.kotlin.serialization.DescriptorSerializerPlugin
|
||||
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslators
|
||||
import org.jetbrains.kotlin.utils.PathUtil
|
||||
import java.io.File
|
||||
import java.nio.file.FileSystems
|
||||
@@ -652,7 +651,7 @@ class KotlinCoreEnvironment private constructor(
|
||||
CandidateInterceptor.registerExtensionPoint(project)
|
||||
DescriptorSerializerPlugin.registerExtensionPoint(project)
|
||||
FirExtensionRegistrarAdapter.registerExtensionPoint(project)
|
||||
TypeAttributeTranslators.registerExtensionPoint(project)
|
||||
TypeAttributeTranslatorExtension.registerExtensionPoint(project)
|
||||
}
|
||||
|
||||
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.contracts.ContractDeserializerImpl
|
||||
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
|
||||
import org.jetbrains.kotlin.extensions.TypeAttributeTranslatorExtension
|
||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
||||
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.LocalClassDescriptorHolder
|
||||
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
|
||||
|
||||
fun StorageComponentContainer.configureModule(
|
||||
@@ -81,7 +80,7 @@ fun StorageComponentContainer.configureModule(
|
||||
analyzerServices.platformConfigurator.configureModuleComponents(this)
|
||||
analyzerServices.platformConfigurator.configureModuleDependentCheckers(this)
|
||||
|
||||
useImpl<TypeAttributeTranslatorsForInjection>()
|
||||
useInstance(TypeAttributeTranslatorExtension.createTranslators(moduleContext.project))
|
||||
|
||||
for (extension in StorageComponentContainerContributor.getInstances(moduleContext.project)) {
|
||||
extension.registerModuleComponents(this, platform, moduleContext.module)
|
||||
|
||||
@@ -7,6 +7,7 @@ dependencies {
|
||||
api(project(":compiler:util"))
|
||||
api(project(":core:descriptors"))
|
||||
api(project(":compiler:resolution.common"))
|
||||
compileOnly(intellijCore())
|
||||
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.annotations.Annotated
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.extensions.TypeAttributeTranslatorExtension
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.deserialization.Flags
|
||||
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement
|
||||
@@ -891,7 +892,7 @@ class DescriptorSerializer private constructor(
|
||||
else
|
||||
createTopLevel(extension)
|
||||
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
|
||||
// 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.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))
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
+1
-21
@@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
+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.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(
|
||||
|
||||
Reference in New Issue
Block a user