IR BE Common: IrSimpleFunction.isOperator
This commit is contained in:
@@ -486,7 +486,8 @@ fun IrClass.addFakeOverrides() {
|
|||||||
isTailrec = irFunction.isTailrec,
|
isTailrec = irFunction.isTailrec,
|
||||||
isSuspend = irFunction.isSuspend,
|
isSuspend = irFunction.isSuspend,
|
||||||
isExpect = irFunction.isExpect,
|
isExpect = irFunction.isExpect,
|
||||||
isFakeOverride = true
|
isFakeOverride = true,
|
||||||
|
isOperator = irFunction.isOperator
|
||||||
).apply {
|
).apply {
|
||||||
descriptor.bind(this)
|
descriptor.bind(this)
|
||||||
parent = this@addFakeOverrides
|
parent = this@addFakeOverrides
|
||||||
@@ -528,7 +529,8 @@ fun createStaticFunctionWithReceivers(
|
|||||||
isTailrec = false,
|
isTailrec = false,
|
||||||
isSuspend = oldFunction.isSuspend,
|
isSuspend = oldFunction.isSuspend,
|
||||||
isExpect = oldFunction.isExpect,
|
isExpect = oldFunction.isExpect,
|
||||||
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE,
|
||||||
|
isOperator = oldFunction is IrSimpleFunction && oldFunction.isOperator
|
||||||
).apply {
|
).apply {
|
||||||
descriptor.bind(this)
|
descriptor.bind(this)
|
||||||
parent = irParent
|
parent = irParent
|
||||||
|
|||||||
+9
-7
@@ -57,7 +57,8 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
|
|
||||||
protected abstract fun initializeStateMachine(coroutineConstructors: List<IrConstructor>, coroutineClassThis: IrValueDeclaration)
|
protected abstract fun initializeStateMachine(coroutineConstructors: List<IrConstructor>, coroutineClassThis: IrValueDeclaration)
|
||||||
|
|
||||||
protected open fun IrBuilderWithScope.generateDelegatedCall(expectedType: IrType, delegatingCall: IrExpression): IrExpression = delegatingCall
|
protected open fun IrBuilderWithScope.generateDelegatedCall(expectedType: IrType, delegatingCall: IrExpression): IrExpression =
|
||||||
|
delegatingCall
|
||||||
|
|
||||||
private val builtCoroutines = mutableMapOf<IrFunction, BuiltCoroutine>()
|
private val builtCoroutines = mutableMapOf<IrFunction, BuiltCoroutine>()
|
||||||
private val suspendLambdas = mutableMapOf<IrFunction, IrFunctionReference>()
|
private val suspendLambdas = mutableMapOf<IrFunction, IrFunctionReference>()
|
||||||
@@ -308,9 +309,7 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
private val continuationType = continuationClassSymbol.typeWith(irFunction.returnType)
|
private val continuationType = continuationClassSymbol.typeWith(irFunction.returnType)
|
||||||
|
|
||||||
// Save all arguments to fields.
|
// Save all arguments to fields.
|
||||||
private val argumentToPropertiesMap = functionParameters.associate {
|
private val argumentToPropertiesMap = functionParameters.associateWith { coroutineClass.addField(it.name, it.type, false) }
|
||||||
it to coroutineClass.addField(it.name, it.type, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
private val coroutineBaseClass = getCoroutineBaseClass(irFunction)
|
private val coroutineBaseClass = getCoroutineBaseClass(irFunction)
|
||||||
private val coroutineBaseClassConstructor = coroutineBaseClass.owner.constructors.single { it.valueParameters.size == 1 }
|
private val coroutineBaseClassConstructor = coroutineBaseClass.owner.constructors.single { it.valueParameters.size == 1 }
|
||||||
@@ -491,7 +490,8 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
isTailrec = false,
|
isTailrec = false,
|
||||||
isSuspend = false,
|
isSuspend = false,
|
||||||
isExpect = false,
|
isExpect = false,
|
||||||
isFakeOverride = false
|
isFakeOverride = false,
|
||||||
|
isOperator = false
|
||||||
).apply {
|
).apply {
|
||||||
d.bind(this)
|
d.bind(this)
|
||||||
parent = coroutineClass
|
parent = coroutineClass
|
||||||
@@ -558,7 +558,8 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
isTailrec = false,
|
isTailrec = false,
|
||||||
isSuspend = true,
|
isSuspend = true,
|
||||||
isExpect = false,
|
isExpect = false,
|
||||||
isFakeOverride = false
|
isFakeOverride = false,
|
||||||
|
isOperator = false
|
||||||
).apply {
|
).apply {
|
||||||
d.bind(this)
|
d.bind(this)
|
||||||
parent = coroutineClass
|
parent = coroutineClass
|
||||||
@@ -617,7 +618,8 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
isTailrec = stateMachineFunction.isTailrec,
|
isTailrec = stateMachineFunction.isTailrec,
|
||||||
isSuspend = stateMachineFunction.isSuspend,
|
isSuspend = stateMachineFunction.isSuspend,
|
||||||
isExpect = stateMachineFunction.isExpect,
|
isExpect = stateMachineFunction.isExpect,
|
||||||
isFakeOverride = false
|
isFakeOverride = false,
|
||||||
|
isOperator = false
|
||||||
).apply {
|
).apply {
|
||||||
d.bind(this)
|
d.bind(this)
|
||||||
parent = coroutineClass
|
parent = coroutineClass
|
||||||
|
|||||||
+2
-1
@@ -527,7 +527,8 @@ class LocalDeclarationsLowering(
|
|||||||
isTailrec = oldDeclaration.isTailrec,
|
isTailrec = oldDeclaration.isTailrec,
|
||||||
isSuspend = oldDeclaration.isSuspend,
|
isSuspend = oldDeclaration.isSuspend,
|
||||||
isExpect = oldDeclaration.isExpect,
|
isExpect = oldDeclaration.isExpect,
|
||||||
isFakeOverride = oldDeclaration.isFakeOverride
|
isFakeOverride = oldDeclaration.isFakeOverride,
|
||||||
|
isOperator = oldDeclaration.isOperator
|
||||||
)
|
)
|
||||||
newDescriptor.bind(newDeclaration)
|
newDescriptor.bind(newDeclaration)
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -85,7 +85,8 @@ class PropertiesLowering(
|
|||||||
return IrFunctionImpl(
|
return IrFunctionImpl(
|
||||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, Name.identifier(name),
|
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, Name.identifier(name),
|
||||||
declaration.visibility, Modality.OPEN, context.irBuiltIns.unitType,
|
declaration.visibility, Modality.OPEN, context.irBuiltIns.unitType,
|
||||||
isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isExpect = false, isFakeOverride = false
|
isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isExpect = false, isFakeOverride = false,
|
||||||
|
isOperator = false
|
||||||
).apply {
|
).apply {
|
||||||
descriptor.bind(this)
|
descriptor.bind(this)
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -128,7 +128,8 @@ fun IrFunctionBuilder.buildFun(originalDescriptor: FunctionDescriptor? = null):
|
|||||||
IrSimpleFunctionSymbolImpl(wrappedDescriptor),
|
IrSimpleFunctionSymbolImpl(wrappedDescriptor),
|
||||||
name, visibility, modality, returnType,
|
name, visibility, modality, returnType,
|
||||||
isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect,
|
isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect,
|
||||||
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE,
|
||||||
|
isOperator = isOperator
|
||||||
).also {
|
).also {
|
||||||
wrappedDescriptor.bind(it)
|
wrappedDescriptor.bind(it)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user