diff --git a/compiler/cli/cli-common/resources/META-INF/extensions/compiler.xml b/compiler/cli/cli-common/resources/META-INF/extensions/compiler.xml
index db536f39d44..3e468bfc9f6 100644
--- a/compiler/cli/cli-common/resources/META-INF/extensions/compiler.xml
+++ b/compiler/cli/cli-common/resources/META-INF/extensions/compiler.xml
@@ -11,8 +11,8 @@
-
()
+ useInstance(TypeAttributeTranslatorExtension.createTranslators(moduleContext.project))
for (extension in StorageComponentContainerContributor.getInstances(moduleContext.project)) {
extension.registerModuleComponents(this, platform, moduleContext.module)
diff --git a/compiler/resolution/build.gradle.kts b/compiler/resolution/build.gradle.kts
index 6b4a495d863..f7709218475 100644
--- a/compiler/resolution/build.gradle.kts
+++ b/compiler/resolution/build.gradle.kts
@@ -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"))
}
diff --git a/compiler/resolution/src/org/jetbrains/kotlin/extensions/TypeAttributeTranslatorExtension.kt b/compiler/resolution/src/org/jetbrains/kotlin/extensions/TypeAttributeTranslatorExtension.kt
new file mode 100644
index 00000000000..b206a6db151
--- /dev/null
+++ b/compiler/resolution/src/org/jetbrains/kotlin/extensions/TypeAttributeTranslatorExtension.kt
@@ -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(
+ "org.jetbrains.kotlin.extensions.typeAttributeTranslatorExtension",
+ TypeAttributeTranslatorExtension::class.java
+ ) {
+ val Default = TypeAttributeTranslators(listOf(DefaultTypeAttributeTranslator))
+
+ fun createTranslators(project: Project): TypeAttributeTranslators {
+ return TypeAttributeTranslators(getInstances(project) + DefaultTypeAttributeTranslator)
+ }
+ }
+}
\ No newline at end of file
diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt
index 299d30339dc..a6ed4894b86 100644
--- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt
+++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt
@@ -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.
diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializationComponentsForJava.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializationComponentsForJava.kt
index 847d8b12b33..e504f8c50fd 100644
--- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializationComponentsForJava.kt
+++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializationComponentsForJava.kt
@@ -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))
)
}
diff --git a/core/descriptors/build.gradle.kts b/core/descriptors/build.gradle.kts
index e7487f99031..c39470e3d59 100644
--- a/core/descriptors/build.gradle.kts
+++ b/core/descriptors/build.gradle.kts
@@ -10,7 +10,6 @@ dependencies {
api(project(":core:util.runtime"))
api(kotlinStdlib())
api(project(":kotlin-annotations-jvm"))
- compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
}
sourceSets {
diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeAttributeTranslator.kt b/core/descriptors/src/org/jetbrains/kotlin/types/TypeAttributeTranslator.kt
index 90a773754ac..86f3485750f 100644
--- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeAttributeTranslator.kt
+++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeAttributeTranslator.kt
@@ -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(
diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/extensions/TypeAttributeTranslators.kt b/core/descriptors/src/org/jetbrains/kotlin/types/extensions/TypeAttributeTranslators.kt
index 72b62939c95..b6360dae0cb 100644
--- a/core/descriptors/src/org/jetbrains/kotlin/types/extensions/TypeAttributeTranslators.kt
+++ b/core/descriptors/src/org/jetbrains/kotlin/types/extensions/TypeAttributeTranslators.kt
@@ -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 = TypeAttributeTranslators(project).translators
-}
-
-class TypeAttributeTranslators private constructor(val translators: List) {
-
- constructor(project: Project) : this(getInstances(project) + DefaultTypeAttributeTranslator)
-
-
+class TypeAttributeTranslators(val translators: List) {
fun toAttributes(
annotations: Annotations,
typeConstructor: TypeConstructor,
@@ -39,12 +27,4 @@ class TypeAttributeTranslators private constructor(val translators: List(
- "org.jetbrains.kotlin.extensions.typeAttribute",
- TypeAttributeTranslatorExtension::class.java
- ) {
- val Default = TypeAttributeTranslators(listOf(DefaultTypeAttributeTranslator))
- }
}
diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MetadataPackageFragmentProvider.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MetadataPackageFragmentProvider.kt
index 0da517263cb..3746a718c59 100644
--- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MetadataPackageFragmentProvider.kt
+++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MetadataPackageFragmentProvider.kt
@@ -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(