Deprecate ClassBuilderInterceptorExtension
ClassGeneratorExtension is supposed to be used instead.
This commit is contained in:
+9
-1
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
@file:Suppress("DEPRECATION_ERROR")
|
||||
|
||||
package org.jetbrains.kotlin.codegen.extensions
|
||||
|
||||
import org.jetbrains.kotlin.codegen.ClassBuilderFactory
|
||||
@@ -21,6 +23,12 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
|
||||
@Deprecated(
|
||||
"This extension is only supported in K1 and will not work properly in K2. " +
|
||||
"Please migrate to org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension or " +
|
||||
"org.jetbrains.kotlin.backend.jvm.extensions.ClassGeneratorExtension.",
|
||||
level = DeprecationLevel.ERROR
|
||||
)
|
||||
interface ClassBuilderInterceptorExtension {
|
||||
companion object : ProjectExtensionDescriptor<ClassBuilderInterceptorExtension>(
|
||||
"org.jetbrains.kotlin.classBuilderFactoryInterceptorExtension", ClassBuilderInterceptorExtension::class.java)
|
||||
@@ -31,4 +39,4 @@ interface ClassBuilderInterceptorExtension {
|
||||
diagnostics: DiagnosticSink
|
||||
): ClassBuilderFactory
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.codegen.*
|
||||
import org.jetbrains.kotlin.codegen.binding.CodegenBinding
|
||||
import org.jetbrains.kotlin.codegen.context.CodegenContext
|
||||
import org.jetbrains.kotlin.codegen.context.RootContext
|
||||
import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension
|
||||
import org.jetbrains.kotlin.codegen.extensions.ClassFileFactoryFinalizerExtension
|
||||
import org.jetbrains.kotlin.codegen.inline.GlobalInlineContext
|
||||
import org.jetbrains.kotlin.codegen.inline.InlineCache
|
||||
@@ -405,14 +404,14 @@ class GenerationState private constructor(
|
||||
this.factory = ClassFileFactory(this, interceptedBuilderFactory, finalizers)
|
||||
}
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
private fun loadClassBuilderInterceptors(): List<ClassBuilderInterceptorExtension> {
|
||||
@Suppress("UNCHECKED_CAST", "DEPRECATION_ERROR")
|
||||
private fun loadClassBuilderInterceptors(): List<org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension> {
|
||||
// Using Class.forName here because we're in the old JVM backend, and we need to load extensions declared in the JVM IR backend.
|
||||
val adapted = Class.forName("org.jetbrains.kotlin.backend.jvm.extensions.ClassBuilderExtensionAdapter")
|
||||
.getDeclaredMethod("getExtensions", Project::class.java)
|
||||
.invoke(null, project) as List<ClassBuilderInterceptorExtension>
|
||||
.invoke(null, project) as List<org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension>
|
||||
|
||||
return ClassBuilderInterceptorExtension.getInstances(project) + adapted
|
||||
return org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension.getInstances(project) + adapted
|
||||
}
|
||||
|
||||
fun beforeCompile() {
|
||||
|
||||
@@ -67,7 +67,6 @@ import org.jetbrains.kotlin.cli.jvm.index.*
|
||||
import org.jetbrains.kotlin.cli.jvm.javac.JavacWrapperRegistrar
|
||||
import org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder
|
||||
import org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleResolver
|
||||
import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension
|
||||
import org.jetbrains.kotlin.codegen.extensions.ClassFileFactoryFinalizerExtension
|
||||
import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension
|
||||
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
|
||||
@@ -637,7 +636,8 @@ class KotlinCoreEnvironment private constructor(
|
||||
ExpressionCodegenExtension.registerExtensionPoint(project)
|
||||
SyntheticResolveExtension.registerExtensionPoint(project)
|
||||
SyntheticJavaResolveExtension.registerExtensionPoint(project)
|
||||
ClassBuilderInterceptorExtension.registerExtensionPoint(project)
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension.registerExtensionPoint(project)
|
||||
ClassGeneratorExtension.registerExtensionPoint(project)
|
||||
ClassFileFactoryFinalizerExtension.registerExtensionPoint(project)
|
||||
AnalysisHandlerExtension.registerExtensionPoint(project)
|
||||
|
||||
+5
-3
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.codegen.ClassBuilder
|
||||
import org.jetbrains.kotlin.codegen.ClassBuilderFactory
|
||||
import org.jetbrains.kotlin.codegen.DelegatingClassBuilder
|
||||
import org.jetbrains.kotlin.codegen.DelegatingClassBuilderFactory
|
||||
import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||
@@ -30,11 +29,14 @@ import org.jetbrains.org.objectweb.asm.RecordComponentVisitor
|
||||
@Suppress("unused") // Used reflectively in GenerationState.
|
||||
internal object ClassBuilderExtensionAdapter {
|
||||
@JvmStatic
|
||||
fun getExtensions(project: Project): List<ClassBuilderInterceptorExtension> =
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
fun getExtensions(project: Project): List<org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension> =
|
||||
ClassGeneratorExtension.getInstances(project).map(::ExtensionAdapter)
|
||||
}
|
||||
|
||||
private class ExtensionAdapter(private val extension: ClassGeneratorExtension) : ClassBuilderInterceptorExtension {
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
private class ExtensionAdapter(private val extension: ClassGeneratorExtension) :
|
||||
org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension {
|
||||
override fun interceptClassBuilderFactory(
|
||||
interceptedFactory: ClassBuilderFactory,
|
||||
bindingContext: BindingContext,
|
||||
|
||||
Reference in New Issue
Block a user