[IR] Make IrMemberAccessExpression be IrDeclarationReference
This commit is contained in:
@@ -25,6 +25,8 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
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.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrConstructorSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrTypeParameterSymbolImpl
|
||||
@@ -587,3 +589,6 @@ fun copyBodyToStatic(oldFunction: IrFunction, staticFunction: IrFunction) {
|
||||
}, null)
|
||||
?.patchDeclarationParents(staticFunction)
|
||||
}
|
||||
|
||||
val IrSymbol.isSuspend: Boolean
|
||||
get() = this is IrSimpleFunctionSymbol && owner.isSuspend
|
||||
+2
-2
@@ -5,8 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.backend.js.transformers.irToJs
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.descriptors.isSuspend
|
||||
import org.jetbrains.kotlin.backend.common.ir.isElseBranch
|
||||
import org.jetbrains.kotlin.backend.common.ir.isSuspend
|
||||
import org.jetbrains.kotlin.ir.backend.js.utils.*
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||
@@ -212,7 +212,7 @@ fun translateCallArguments(expression: IrMemberAccessExpression, context: JsGene
|
||||
result
|
||||
}
|
||||
|
||||
return if (expression.descriptor.isSuspend) {
|
||||
return if (expression.symbol.isSuspend) {
|
||||
arguments + context.continuation
|
||||
} else arguments
|
||||
}
|
||||
|
||||
@@ -16,14 +16,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
|
||||
import org.jetbrains.kotlin.ir.symbols.*
|
||||
|
||||
interface IrCallableReference : IrMemberAccessExpression, IrDeclarationReference {
|
||||
override val descriptor: CallableDescriptor
|
||||
interface IrCallableReference : IrMemberAccessExpression {
|
||||
}
|
||||
|
||||
interface IrFunctionReference : IrCallableReference {
|
||||
|
||||
+6
-6
@@ -10,18 +10,18 @@ import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.types.defaultType
|
||||
import org.jetbrains.kotlin.ir.types.toKotlinType
|
||||
import org.jetbrains.kotlin.ir.util.dump
|
||||
import org.jetbrains.kotlin.ir.util.render
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
|
||||
interface IrMemberAccessExpression : IrExpression {
|
||||
interface IrMemberAccessExpression : IrExpression, IrDeclarationReference {
|
||||
var dispatchReceiver: IrExpression?
|
||||
var extensionReceiver: IrExpression?
|
||||
|
||||
val descriptor: CallableDescriptor
|
||||
override val descriptor: CallableDescriptor
|
||||
override val symbol: IrSymbol
|
||||
|
||||
val origin: IrStatementOrigin?
|
||||
|
||||
val typeArgumentsCount: Int
|
||||
@@ -66,7 +66,7 @@ val CallableDescriptor.typeParametersCount: Int
|
||||
fun IrMemberAccessExpression.getTypeArgumentOrDefault(irTypeParameter: IrTypeParameter) =
|
||||
getTypeArgument(irTypeParameter.index) ?: irTypeParameter.defaultType
|
||||
|
||||
interface IrFunctionAccessExpression : IrMemberAccessExpression, IrDeclarationReference {
|
||||
interface IrFunctionAccessExpression : IrMemberAccessExpression {
|
||||
override val descriptor: FunctionDescriptor
|
||||
override val symbol: IrFunctionSymbol
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user