diff --git a/compiler/ir/backend.jvm/build.gradle.kts b/compiler/ir/backend.jvm/build.gradle.kts index d16921e1b49..ba27156ec3f 100644 --- a/compiler/ir/backend.jvm/build.gradle.kts +++ b/compiler/ir/backend.jvm/build.gradle.kts @@ -22,11 +22,3 @@ sourceSets { } "test" {} } - -tasks { - val compileKotlin by existing(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class) { - kotlinOptions { - freeCompilerArgs += "-Xopt-in=org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI" - } - } -} diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt index e81866198da..d838d691ed1 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/IrSourceCompilerForInline.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticUtils import org.jetbrains.kotlin.incremental.components.LocationInfo import org.jetbrains.kotlin.incremental.components.LookupLocation import org.jetbrains.kotlin.incremental.components.Position +import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.descriptors.IrBasedSimpleFunctionDescriptor import org.jetbrains.kotlin.ir.descriptors.toIrBasedDescriptor @@ -119,6 +120,7 @@ class IrSourceCompilerForInline( it.finallyDepth = curFinallyDepth } + @ObsoleteDescriptorBasedAPI override fun isCallInsideSameModuleAsDeclared(functionDescriptor: FunctionDescriptor): Boolean { require(functionDescriptor is IrBasedSimpleFunctionDescriptor) { "expected an IrBasedSimpleFunctionDescriptor, got $functionDescriptor" diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt index 6d4ea931b07..15f7676b55b 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.DescriptorVisibilities +import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrGetEnumValue import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression @@ -411,9 +412,11 @@ val IrFunction.functionDeprecationFlags: Int return originFlags or propertyFlags or callableDeprecationFlags } +@OptIn(ObsoleteDescriptorBasedAPI::class) val IrDeclaration.psiElement: PsiElement? get() = (descriptor as? DeclarationDescriptorWithSource)?.psiElement +@OptIn(ObsoleteDescriptorBasedAPI::class) val IrMemberAccessExpression<*>.psiElement: PsiElement? get() = (symbol.descriptor.original as? DeclarationDescriptorWithSource)?.psiElement diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/SharedVariablesManager.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/SharedVariablesManager.kt index fa9a10c23ad..352daa678cc 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/SharedVariablesManager.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/SharedVariablesManager.kt @@ -95,13 +95,14 @@ class JvmSharedVariablesManager( typeArguments.forEachIndexed(::putTypeArgument) } return with(originalDeclaration) { + val descriptor = WrappedVariableDescriptor() IrVariableImpl( - startOffset, endOffset, origin, IrVariableSymbolImpl(WrappedVariableDescriptor()), name, refType, + startOffset, endOffset, origin, IrVariableSymbolImpl(descriptor), name, refType, isVar = false, // writes are remapped to field stores isConst = false, // const vals could not possibly require ref wrappers isLateinit = false ).apply { - (descriptor as WrappedVariableDescriptor).bind(this) + descriptor.bind(this) initializer = refConstructorCall } } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt index 8ac1771d19f..32445fc7ecd 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt @@ -82,14 +82,17 @@ private class AdditionalClassAnnotationLowering(private val context: JvmBackendC returnType = annotationClass.defaultType } - private fun buildEnumEntry(enumClass: IrClass, entryName: String): IrEnumEntry = IrEnumEntryImpl( - UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB, - IrEnumEntrySymbolImpl(WrappedEnumEntryDescriptor()), - Name.identifier(entryName) - ).apply { - (descriptor as WrappedEnumEntryDescriptor).bind(this) - parent = enumClass - enumClass.addChild(this) + private fun buildEnumEntry(enumClass: IrClass, entryName: String): IrEnumEntry { + val descriptor = WrappedEnumEntryDescriptor() + return IrEnumEntryImpl( + UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB, + IrEnumEntrySymbolImpl(descriptor), + Name.identifier(entryName) + ).apply { + descriptor.bind(this) + parent = enumClass + enumClass.addChild(this) + } } private val documentedConstructor = buildAnnotationConstructor(buildAnnotationClass("Documented")) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/CheckLocalNamesWithOldBackend.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/CheckLocalNamesWithOldBackend.kt index 8fef0a038bc..37d739f5170 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/CheckLocalNamesWithOldBackend.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/CheckLocalNamesWithOldBackend.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.codegen.binding.CodegenBinding import org.jetbrains.kotlin.config.JvmAnalysisFlags import org.jetbrains.kotlin.ir.IrElement +import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.util.render @@ -34,6 +35,7 @@ class CheckLocalNamesWithOldBackend(private val context: JvmBackendContext) : Fi irFile.acceptVoid(this) } + @OptIn(ObsoleteDescriptorBasedAPI::class) override fun visitClass(declaration: IrClass) { val actualName = context.getLocalClassType(declaration)?.internalName if (actualName != null) { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt index 217335d48d0..c38c4a45fa3 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt @@ -476,7 +476,8 @@ internal class FunctionReferenceLowering(private val context: JvmBackendContext) //don't pass receivers otherwise LocalDeclarationLowering will create additional captured parameters IrFunctionReferenceImpl( UNDEFINED_OFFSET, UNDEFINED_OFFSET, irFunctionReference.type, target, - irFunctionReference.typeArgumentsCount, irFunctionReference.reflectionTarget, null + irFunctionReference.typeArgumentsCount, target.owner.valueParameters.size, + irFunctionReference.reflectionTarget, null ).apply { copyTypeArgumentsFrom(irFunctionReference) } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SuspendLambdaLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SuspendLambdaLowering.kt index 206e877faae..190a3c95274 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SuspendLambdaLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SuspendLambdaLowering.kt @@ -123,7 +123,7 @@ private class SuspendLambdaLowering(context: JvmBackendContext) : SuspendLowerin private fun generateAnonymousObjectForLambda(reference: IrFunctionReference, parent: IrDeclarationParent) = context.createIrBuilder(reference.symbol).irBlock(reference.startOffset, reference.endOffset) { - assert(reference.getArguments().isEmpty()) { "lambda with bound arguments: ${reference.render()}" } + assert(reference.getArgumentsWithIr().isEmpty()) { "lambda with bound arguments: ${reference.render()}" } val continuation = generateContinuationClassForLambda(reference, parent) +continuation +irCall(continuation.constructors.single().symbol).apply { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt index dfe097166c4..30265076126 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt @@ -424,7 +424,7 @@ internal class SyntheticAccessorLowering(val context: JvmBackendContext) : IrEle accessorSymbol as IrConstructorSymbol, oldExpression.typeArgumentsCount ) is IrConstructorCall -> - IrConstructorCallImpl.fromSymbolDescriptor( + IrConstructorCallImpl.fromSymbolOwner( oldExpression.startOffset, oldExpression.endOffset, oldExpression.type, accessorSymbol as IrConstructorSymbol