[IR] Mark IrFunctionImpl with an opt-in annotation
KT-59318
This commit is contained in:
committed by
Space Team
parent
e1d03f6540
commit
41197392f9
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.declarations.impl
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.ir.IrImplementationDetail
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.descriptors.toIrBasedDescriptor
|
||||
@@ -21,7 +22,10 @@ import org.jetbrains.kotlin.ir.types.impl.ReturnTypeIsNotInitializedException
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
|
||||
class IrFunctionImpl(
|
||||
// IMPORTANT: This class is used in the Compose IDE plugin (platform 233).
|
||||
// Don't rename it or change its constructor's signature so as not to break binary compatibility when an older version of
|
||||
// the Compose IDE plugin is used with a newer version of the Kotlin IDE plugin that vendors the updated compiler version.
|
||||
class IrFunctionImpl @IrImplementationDetail constructor(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var origin: IrDeclarationOrigin,
|
||||
|
||||
+39
-9
@@ -12,14 +12,17 @@ import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrPropertyImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrAbstractDescriptorBasedFunctionFactory
|
||||
import org.jetbrains.kotlin.ir.linkage.IrProvider
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.types.SimpleTypeNullability
|
||||
import org.jetbrains.kotlin.ir.types.classOrNull
|
||||
@@ -188,9 +191,23 @@ internal class BuiltInFictitiousFunctionIrClassFactory(
|
||||
): IrSimpleFunction {
|
||||
val functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction = {
|
||||
with(descriptor) {
|
||||
IrFunctionImpl(
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin, it, name, visibility, modality, returnType,
|
||||
isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect, isFakeOverride
|
||||
symbolTable.irFactory.createSimpleFunction(
|
||||
SYNTHETIC_OFFSET,
|
||||
SYNTHETIC_OFFSET,
|
||||
origin,
|
||||
name,
|
||||
visibility,
|
||||
isInline,
|
||||
isExpect,
|
||||
returnType,
|
||||
modality,
|
||||
it,
|
||||
isTailrec,
|
||||
isSuspend,
|
||||
isOperator,
|
||||
isInfix,
|
||||
isExternal,
|
||||
isFakeOverride = isFakeOverride,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -329,10 +346,23 @@ internal class BuiltInFictitiousFunctionIrClassFactory(
|
||||
|
||||
val functionDeclare = { s: IrSimpleFunctionSymbol ->
|
||||
descriptor.run {
|
||||
IrFunctionImpl(
|
||||
offset, offset, memberOrigin, s, name, visibility, modality, returnType,
|
||||
isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect,
|
||||
isFakeOverride = true
|
||||
symbolTable.irFactory.createSimpleFunction(
|
||||
offset,
|
||||
offset,
|
||||
memberOrigin,
|
||||
name,
|
||||
visibility,
|
||||
isInline,
|
||||
isExpect,
|
||||
returnType,
|
||||
modality,
|
||||
s,
|
||||
isTailrec,
|
||||
isSuspend,
|
||||
isOperator,
|
||||
isInfix,
|
||||
isExternal,
|
||||
isFakeOverride = true,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+24
-17
@@ -3,10 +3,11 @@ package org.jetbrains.kotlin.backend.konan.cgen
|
||||
import org.jetbrains.kotlin.backend.common.lower.at
|
||||
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||
import org.jetbrains.kotlin.backend.common.lower.irNot
|
||||
import org.jetbrains.kotlin.backend.konan.*
|
||||
import org.jetbrains.kotlin.backend.konan.InteropFqNames
|
||||
import org.jetbrains.kotlin.backend.konan.PrimitiveBinaryType
|
||||
import org.jetbrains.kotlin.backend.konan.RuntimeNames
|
||||
import org.jetbrains.kotlin.backend.konan.ir.KonanSymbols
|
||||
import org.jetbrains.kotlin.backend.konan.ir.buildSimpleAnnotation
|
||||
import org.jetbrains.kotlin.ir.util.getAnnotationArgumentValue
|
||||
import org.jetbrains.kotlin.backend.konan.ir.konanLibrary
|
||||
import org.jetbrains.kotlin.backend.konan.lower.FunctionReferenceLowering
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
@@ -18,7 +19,8 @@ import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl
|
||||
@@ -573,23 +575,22 @@ private fun KotlinStubs.createFakeKotlinExternalFunction(
|
||||
cFunctionName: String,
|
||||
isObjCMethod: Boolean
|
||||
): IrSimpleFunction {
|
||||
val bridge = IrFunctionImpl(
|
||||
val bridge = irBuiltIns.irFactory.createSimpleFunction(
|
||||
UNDEFINED_OFFSET,
|
||||
UNDEFINED_OFFSET,
|
||||
IrDeclarationOrigin.DEFINED,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
Name.identifier(cFunctionName),
|
||||
DescriptorVisibilities.PRIVATE,
|
||||
Modality.FINAL,
|
||||
signature.returnType,
|
||||
isInline = false,
|
||||
isExternal = true,
|
||||
isExpect = false,
|
||||
signature.returnType,
|
||||
Modality.FINAL,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false,
|
||||
isOperator = false,
|
||||
isInfix = false
|
||||
isInfix = false,
|
||||
isExternal = true,
|
||||
)
|
||||
|
||||
bridge.annotations += buildSimpleAnnotation(irBuiltIns, UNDEFINED_OFFSET, UNDEFINED_OFFSET,
|
||||
@@ -1186,15 +1187,21 @@ private class ObjCBlockPointerValuePassing(
|
||||
val overriddenInvokeMethod = (functionType.classifier.owner as IrClass).simpleFunctions()
|
||||
.single { it.name == OperatorNameConventions.INVOKE }
|
||||
|
||||
val invokeMethod = IrFunctionImpl(
|
||||
startOffset, endOffset,
|
||||
val invokeMethod = context.irFactory.createSimpleFunction(
|
||||
startOffset,
|
||||
endOffset,
|
||||
OBJC_BLOCK_FUNCTION_IMPL,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
overriddenInvokeMethod.name,
|
||||
DescriptorVisibilities.PUBLIC, Modality.FINAL,
|
||||
DescriptorVisibilities.PUBLIC,
|
||||
isInline = false,
|
||||
isExpect = false,
|
||||
returnType = functionType.arguments.last().typeOrNull!!,
|
||||
isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isExpect = false,
|
||||
isFakeOverride = false, isOperator = false, isInfix = false
|
||||
Modality.FINAL,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isOperator = false,
|
||||
isInfix = false,
|
||||
)
|
||||
invokeMethod.overriddenSymbols += overriddenInvokeMethod.symbol
|
||||
irClass.addChild(invokeMethod)
|
||||
|
||||
+9
-9
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildVariable
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
|
||||
@@ -112,23 +112,23 @@ private fun createKotlinBridge(
|
||||
foreignExceptionMode: ForeignExceptionMode.Mode,
|
||||
origin: IrDeclarationOrigin
|
||||
): IrFunction {
|
||||
val bridge = IrFunctionImpl(
|
||||
val bridge = stubs.irBuiltIns.irFactory.createSimpleFunction(
|
||||
startOffset,
|
||||
endOffset,
|
||||
origin,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
Name.identifier(cBridgeName),
|
||||
DescriptorVisibilities.PRIVATE,
|
||||
Modality.FINAL,
|
||||
IrUninitializedType,
|
||||
isInline = false,
|
||||
isExternal = isExternal,
|
||||
isExpect = false,
|
||||
IrUninitializedType,
|
||||
Modality.FINAL,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false,
|
||||
isOperator = false,
|
||||
isInfix = false
|
||||
isInfix = false,
|
||||
isExternal = isExternal,
|
||||
isFakeOverride = false,
|
||||
)
|
||||
if (isExternal) {
|
||||
bridge.annotations += buildSimpleAnnotation(stubs.irBuiltIns, startOffset, endOffset,
|
||||
|
||||
+15
-13
@@ -21,10 +21,13 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
||||
import org.jetbrains.kotlin.ir.expressions.IrCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrFunctionReference
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
||||
@@ -127,23 +130,22 @@ internal class WorkersBridgesBuilding(val context: Context) : DeclarationContain
|
||||
val startOffset = jobFunction.startOffset
|
||||
val endOffset = jobFunction.endOffset
|
||||
runtimeJobFunction =
|
||||
IrFunctionImpl(
|
||||
startOffset, endOffset,
|
||||
context.irFactory.createSimpleFunction(
|
||||
startOffset,
|
||||
endOffset,
|
||||
IrDeclarationOrigin.DEFINED,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
jobFunction.name,
|
||||
jobFunction.visibility,
|
||||
jobFunction.modality,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isExpect = false,
|
||||
returnType = context.irBuiltIns.anyNType,
|
||||
jobFunction.modality,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
returnType = context.irBuiltIns.anyNType,
|
||||
isExpect = false,
|
||||
isFakeOverride = false,
|
||||
isOperator = false,
|
||||
isInfix = false
|
||||
)
|
||||
isInfix = false,
|
||||
)
|
||||
|
||||
runtimeJobFunction.valueParameters +=
|
||||
IrValueParameterImpl(
|
||||
|
||||
+11
-17
@@ -7,20 +7,15 @@ package org.jetbrains.kotlin.backend.konan.lower
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.ClassLoweringPass
|
||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
||||
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||
import org.jetbrains.kotlin.backend.common.lower.irBlockBody
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.builders.irDelegatingConstructorCall
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.types.isPrimitiveType
|
||||
import org.jetbrains.kotlin.ir.types.isString
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||
@@ -109,22 +104,21 @@ internal class InitializersLowering(val context: CommonBackendContext) : ClassLo
|
||||
val startOffset = irClass.startOffset
|
||||
val endOffset = irClass.endOffset
|
||||
val initializeFun =
|
||||
IrFunctionImpl(
|
||||
startOffset, endOffset,
|
||||
context.irFactory.createSimpleFunction(
|
||||
startOffset,
|
||||
endOffset,
|
||||
DECLARATION_ORIGIN_ANONYMOUS_INITIALIZER,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
"INITIALIZER".synthesizedName,
|
||||
DescriptorVisibilities.PRIVATE,
|
||||
Modality.FINAL,
|
||||
context.irBuiltIns.unitType,
|
||||
isInline = false,
|
||||
isSuspend = false,
|
||||
isExternal = false,
|
||||
isTailrec = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false,
|
||||
context.irBuiltIns.unitType,
|
||||
Modality.FINAL,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isOperator = false,
|
||||
isInfix = false
|
||||
isInfix = false,
|
||||
).apply {
|
||||
parent = irClass
|
||||
irClass.declarations.add(this)
|
||||
|
||||
+20
-23
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.backend.konan.lower
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
||||
import org.jetbrains.kotlin.ir.util.inlineFunction
|
||||
import org.jetbrains.kotlin.backend.common.lower.*
|
||||
import org.jetbrains.kotlin.backend.common.peek
|
||||
import org.jetbrains.kotlin.backend.common.pop
|
||||
@@ -15,7 +14,10 @@ import org.jetbrains.kotlin.backend.konan.*
|
||||
import org.jetbrains.kotlin.backend.konan.cgen.*
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.allOverriddenFunctions
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName
|
||||
import org.jetbrains.kotlin.backend.konan.ir.*
|
||||
import org.jetbrains.kotlin.backend.konan.ir.buildSimpleAnnotation
|
||||
import org.jetbrains.kotlin.backend.konan.ir.getSuperClassNotAny
|
||||
import org.jetbrains.kotlin.backend.konan.ir.isFromInteropLibrary
|
||||
import org.jetbrains.kotlin.backend.konan.ir.konanLibrary
|
||||
import org.jetbrains.kotlin.backend.konan.llvm.IntrinsicType
|
||||
import org.jetbrains.kotlin.backend.konan.llvm.tryGetIntrinsicType
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
@@ -27,13 +29,10 @@ import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.objcinterop.*
|
||||
import org.jetbrains.kotlin.ir.util.toIrConst
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
@@ -271,22 +270,21 @@ private class InteropLoweringPart1(val generationState: NativeGenerationState) :
|
||||
|
||||
// Generate `override fun init...(...) = this.initBy(...)`:
|
||||
|
||||
return IrFunctionImpl(
|
||||
constructor.startOffset, constructor.endOffset,
|
||||
return context.irFactory.createSimpleFunction(
|
||||
constructor.startOffset,
|
||||
constructor.endOffset,
|
||||
OVERRIDING_INITIALIZER_BY_CONSTRUCTOR,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
initMethod.name,
|
||||
DescriptorVisibilities.PUBLIC,
|
||||
Modality.OPEN,
|
||||
irClass.defaultType,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isExpect = false,
|
||||
irClass.defaultType,
|
||||
Modality.OPEN,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false,
|
||||
isOperator = false,
|
||||
isInfix = false
|
||||
isInfix = false,
|
||||
).also { result ->
|
||||
result.parent = irClass
|
||||
result.createDispatchReceiverParameter()
|
||||
@@ -369,24 +367,23 @@ private class InteropLoweringPart1(val generationState: NativeGenerationState) :
|
||||
function.valueParameters.mapTo(parameterTypes) { nativePtrType }
|
||||
|
||||
val newFunction =
|
||||
IrFunctionImpl(
|
||||
function.startOffset, function.endOffset,
|
||||
context.irFactory.createSimpleFunction(
|
||||
function.startOffset,
|
||||
function.endOffset,
|
||||
// The generated function is called by ObjC and contains Kotlin code, so
|
||||
// it must switch thread state and potentially initialize runtime on this thread.
|
||||
CBridgeOrigin.C_TO_KOTLIN_BRIDGE,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
("imp:$selector").synthesizedName,
|
||||
DescriptorVisibilities.PRIVATE,
|
||||
Modality.FINAL,
|
||||
function.returnType,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isExpect = false,
|
||||
function.returnType,
|
||||
Modality.FINAL,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false,
|
||||
isOperator = false,
|
||||
isInfix = false
|
||||
isInfix = false,
|
||||
)
|
||||
|
||||
newFunction.valueParameters += parameterTypes.mapIndexed { index, type ->
|
||||
|
||||
+29
-31
@@ -5,18 +5,19 @@ import org.jetbrains.kotlin.backend.common.lower.*
|
||||
import org.jetbrains.kotlin.backend.common.lower.optimizations.LivenessAnalysis
|
||||
import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.backend.konan.NativeGenerationState
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.builders.irCall
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrSetValueImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrSuspendableExpressionImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrSuspensionPointImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
||||
@@ -28,7 +29,6 @@ import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.ir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.calls.checkers.isRestrictedSuspendFunction
|
||||
import org.jetbrains.kotlin.resolve.calls.checkers.isRestrictsSuspensionReceiver
|
||||
|
||||
internal class NativeSuspendFunctionsLowering(
|
||||
generationState: NativeGenerationState
|
||||
@@ -457,42 +457,40 @@ internal class NativeSuspendFunctionsLowering(
|
||||
|
||||
// These are marker functions to split up the lowering on two parts.
|
||||
private val saveState =
|
||||
IrFunctionImpl(
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET,
|
||||
context.irFactory.createSimpleFunction(
|
||||
SYNTHETIC_OFFSET,
|
||||
SYNTHETIC_OFFSET,
|
||||
IrDeclarationOrigin.DEFINED,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
"saveState".synthesizedName,
|
||||
DescriptorVisibilities.PRIVATE,
|
||||
Modality.ABSTRACT,
|
||||
context.irBuiltIns.unitType,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isExpect = false,
|
||||
context.irBuiltIns.unitType,
|
||||
Modality.ABSTRACT,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false,
|
||||
isOperator = false,
|
||||
isInfix = false
|
||||
isInfix = false,
|
||||
)
|
||||
|
||||
private val restoreState =
|
||||
IrFunctionImpl(
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET,
|
||||
IrDeclarationOrigin.DEFINED,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
"restoreState".synthesizedName,
|
||||
DescriptorVisibilities.PRIVATE,
|
||||
Modality.ABSTRACT,
|
||||
context.irBuiltIns.unitType,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false,
|
||||
isOperator = false,
|
||||
isInfix = false
|
||||
)
|
||||
context.irFactory.createSimpleFunction(
|
||||
SYNTHETIC_OFFSET,
|
||||
SYNTHETIC_OFFSET,
|
||||
IrDeclarationOrigin.DEFINED,
|
||||
"restoreState".synthesizedName,
|
||||
DescriptorVisibilities.PRIVATE,
|
||||
isInline = false,
|
||||
isExpect = false,
|
||||
context.irBuiltIns.unitType,
|
||||
Modality.ABSTRACT,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isOperator = false,
|
||||
isInfix = false,
|
||||
)
|
||||
|
||||
private fun IrBuilderWithScope.irVar(name: Name, type: IrType,
|
||||
isMutable: Boolean = false,
|
||||
|
||||
+16
-19
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
@@ -332,22 +331,21 @@ internal class TestProcessor (val context: Context) {
|
||||
private fun buildObjectGetter(objectSymbol: IrClassSymbol,
|
||||
owner: IrClass,
|
||||
getterName: Name): IrSimpleFunction =
|
||||
IrFunctionImpl(
|
||||
owner.startOffset, owner.endOffset,
|
||||
context.irFactory.createSimpleFunction(
|
||||
owner.startOffset,
|
||||
owner.endOffset,
|
||||
TEST_SUITE_GENERATED_MEMBER,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
getterName,
|
||||
DescriptorVisibilities.PROTECTED,
|
||||
Modality.FINAL,
|
||||
objectSymbol.starProjectedType,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isExpect = false,
|
||||
objectSymbol.starProjectedType,
|
||||
Modality.FINAL,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false,
|
||||
isOperator = false,
|
||||
isInfix = false
|
||||
isInfix = false,
|
||||
).apply {
|
||||
parent = owner
|
||||
|
||||
@@ -370,22 +368,21 @@ internal class TestProcessor (val context: Context) {
|
||||
private fun buildInstanceGetter(classSymbol: IrClassSymbol,
|
||||
owner: IrClass,
|
||||
getterName: Name): IrSimpleFunction =
|
||||
IrFunctionImpl(
|
||||
owner.startOffset, owner.endOffset,
|
||||
context.irFactory.createSimpleFunction(
|
||||
owner.startOffset,
|
||||
owner.endOffset,
|
||||
TEST_SUITE_GENERATED_MEMBER,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
getterName,
|
||||
DescriptorVisibilities.PROTECTED,
|
||||
Modality.FINAL,
|
||||
classSymbol.starProjectedType,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isExpect = false,
|
||||
classSymbol.starProjectedType,
|
||||
Modality.FINAL,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false,
|
||||
isOperator = false,
|
||||
isInfix = false
|
||||
isInfix = false,
|
||||
).apply {
|
||||
parent = owner
|
||||
|
||||
|
||||
-1
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.IrReturnableBlockSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
|
||||
Reference in New Issue
Block a user