JVM_IR: make ObsoleteDescriptorBasedApi use explicit in all of backend.jvm

This commit is contained in:
Georgy Bronnikov
2020-10-14 15:05:47 +03:00
parent 305da8ee10
commit a0a6a4b0f1
9 changed files with 25 additions and 21 deletions
-8
View File
@@ -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"
}
}
}
@@ -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"
@@ -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
@@ -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
}
}
@@ -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"))
@@ -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) {
@@ -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)
}
@@ -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 {
@@ -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