[IR] Drastically simplify the hierarchy of IR origins
IrStatementOriginImpl and IrDeclarationOriginImpl were made final classes to simplify the creation of them (a delegate provider was added) and to optimize performance when comparing the origins by type and name
This commit is contained in:
committed by
Space Team
parent
f2ddae533e
commit
a3b55cf758
+4
-4
@@ -128,10 +128,10 @@ internal class OperatorExpressionGenerator(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun IrStatementOrigin.toIrDynamicOperator() = when (this) {
|
private fun IrStatementOrigin.toIrDynamicOperator() = when (this) {
|
||||||
is IrStatementOrigin.EQEQ -> IrDynamicOperator.EQEQ
|
IrStatementOrigin.EQEQ -> IrDynamicOperator.EQEQ
|
||||||
is IrStatementOrigin.EXCLEQ -> IrDynamicOperator.EXCLEQ
|
IrStatementOrigin.EXCLEQ -> IrDynamicOperator.EXCLEQ
|
||||||
is IrStatementOrigin.EQEQEQ -> IrDynamicOperator.EQEQEQ
|
IrStatementOrigin.EQEQEQ -> IrDynamicOperator.EQEQEQ
|
||||||
is IrStatementOrigin.EXCLEQEQ -> IrDynamicOperator.EXCLEQEQ
|
IrStatementOrigin.EXCLEQEQ -> IrDynamicOperator.EXCLEQEQ
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -22,9 +22,10 @@ import org.jetbrains.kotlin.ir.visitors.*
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val context: C) : FileLoweringPass {
|
abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val context: C) : FileLoweringPass {
|
||||||
|
protected companion object {
|
||||||
protected object STATEMENT_ORIGIN_COROUTINE_IMPL : IrStatementOriginImpl("COROUTINE_IMPL")
|
val STATEMENT_ORIGIN_COROUTINE_IMPL = IrStatementOriginImpl("COROUTINE_IMPL")
|
||||||
protected object DECLARATION_ORIGIN_COROUTINE_IMPL : IrDeclarationOriginImpl("COROUTINE_IMPL")
|
val DECLARATION_ORIGIN_COROUTINE_IMPL = IrDeclarationOriginImpl("COROUTINE_IMPL")
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract val stateMachineMethodName: Name
|
protected abstract val stateMachineMethodName: Name
|
||||||
protected abstract fun getCoroutineBaseClass(function: IrFunction): IrClassSymbol
|
protected abstract fun getCoroutineBaseClass(function: IrFunction): IrClassSymbol
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.utils.filterIsInstanceAnd
|
import org.jetbrains.kotlin.utils.filterIsInstanceAnd
|
||||||
|
|
||||||
val ANNOTATION_IMPLEMENTATION = object : IrDeclarationOriginImpl("ANNOTATION_IMPLEMENTATION", isSynthetic = true) {}
|
val ANNOTATION_IMPLEMENTATION by IrDeclarationOriginImpl.Synthetic
|
||||||
|
|
||||||
class AnnotationImplementationLowering(
|
class AnnotationImplementationLowering(
|
||||||
val transformer: (IrFile) -> AnnotationImplementationTransformer
|
val transformer: (IrFile) -> AnnotationImplementationTransformer
|
||||||
|
|||||||
+1
-1
@@ -103,7 +103,7 @@ private class ArrayConstructorTransformer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private object ArrayConstructorWrapper : IrDeclarationOriginImpl("arrayConstructorWrapper")
|
private val ArrayConstructorWrapper = IrDeclarationOriginImpl("arrayConstructorWrapper")
|
||||||
|
|
||||||
class ArrayConstructorReferenceLowering(val context: CommonBackendContext) : BodyLoweringPass {
|
class ArrayConstructorReferenceLowering(val context: CommonBackendContext) : BodyLoweringPass {
|
||||||
override fun lower(irBody: IrBody, container: IrDeclaration) {
|
override fun lower(irBody: IrBody, container: IrDeclaration) {
|
||||||
|
|||||||
+1
-1
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.ir.util.setDeclarationsParent
|
|||||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
object FINALLY_EXPRESSION : IrStatementOriginImpl("FINALLY_EXPRESSION")
|
val FINALLY_EXPRESSION by IrStatementOriginImpl
|
||||||
|
|
||||||
class FinallyBlocksLowering(val context: CommonBackendContext, private val throwableType: IrType): FileLoweringPass, IrElementTransformerVoidWithContext() {
|
class FinallyBlocksLowering(val context: CommonBackendContext, private val throwableType: IrType): FileLoweringPass, IrElementTransformerVoidWithContext() {
|
||||||
|
|
||||||
|
|||||||
+8
-6
@@ -59,9 +59,9 @@ val IrDeclaration.parentsWithSelf: Sequence<IrDeclarationParent>
|
|||||||
val IrDeclaration.parents: Sequence<IrDeclarationParent>
|
val IrDeclaration.parents: Sequence<IrDeclarationParent>
|
||||||
get() = generateSequence(parent) { (it as? IrDeclaration)?.parent }
|
get() = generateSequence(parent) { (it as? IrDeclaration)?.parent }
|
||||||
|
|
||||||
object BOUND_VALUE_PARAMETER : IrDeclarationOriginImpl("BOUND_VALUE_PARAMETER")
|
val BOUND_VALUE_PARAMETER by IrDeclarationOriginImpl
|
||||||
|
|
||||||
object BOUND_RECEIVER_PARAMETER : IrDeclarationOriginImpl("BOUND_RECEIVER_PARAMETER")
|
val BOUND_RECEIVER_PARAMETER by IrDeclarationOriginImpl
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Local functions raised in LocalDeclarationLowering continue to refer to
|
Local functions raised in LocalDeclarationLowering continue to refer to
|
||||||
@@ -86,11 +86,13 @@ class LocalDeclarationsLowering(
|
|||||||
runOnFilePostfix(irFile)
|
runOnFilePostfix(irFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
object DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE :
|
companion object {
|
||||||
IrDeclarationOriginImpl("FIELD_FOR_CAPTURED_VALUE", isSynthetic = true)
|
val DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE =
|
||||||
|
IrDeclarationOriginImpl("FIELD_FOR_CAPTURED_VALUE", isSynthetic = true)
|
||||||
|
|
||||||
object DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE :
|
val DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE =
|
||||||
IrDeclarationOriginImpl("FIELD_FOR_CROSSINLINE_CAPTURED_VALUE", isSynthetic = true)
|
IrDeclarationOriginImpl("FIELD_FOR_CROSSINLINE_CAPTURED_VALUE", isSynthetic = true)
|
||||||
|
}
|
||||||
|
|
||||||
override fun lower(irBody: IrBody, container: IrDeclaration) {
|
override fun lower(irBody: IrBody, container: IrDeclaration) {
|
||||||
LocalDeclarationsTransformer(irBody, container).lowerLocalDeclarations()
|
LocalDeclarationsTransformer(irBody, container).lowerLocalDeclarations()
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.backend.common.lower
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
|
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
|
||||||
|
|
||||||
interface LoweredStatementOrigins {
|
object LoweredStatementOrigins {
|
||||||
object STATEMENT_ORIGIN_INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE : IrStatementOriginImpl("INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE")
|
val STATEMENT_ORIGIN_INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE = IrStatementOriginImpl("INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE")
|
||||||
object SYNTHESIZED_INIT_BLOCK : IrStatementOriginImpl("SYNTHESIZED_INIT_BLOCK")
|
val SYNTHESIZED_INIT_BLOCK by IrStatementOriginImpl
|
||||||
object DEFAULT_DISPATCH_CALL : IrStatementOriginImpl("DEFAULT_DISPATCH_CALL")
|
val DEFAULT_DISPATCH_CALL by IrStatementOriginImpl
|
||||||
}
|
}
|
||||||
+3
-3
@@ -917,6 +917,6 @@ class FunctionInlining(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object INLINED_FUNCTION_REFERENCE : IrStatementOriginImpl("INLINED_FUNCTION_REFERENCE")
|
val INLINED_FUNCTION_REFERENCE by IrStatementOriginImpl
|
||||||
object INLINED_FUNCTION_ARGUMENTS : IrStatementOriginImpl("INLINED_FUNCTION_ARGUMENTS")
|
val INLINED_FUNCTION_ARGUMENTS by IrStatementOriginImpl
|
||||||
object INLINED_FUNCTION_DEFAULT_ARGUMENTS : IrStatementOriginImpl("INLINED_FUNCTION_DEFAULT_ARGUMENTS")
|
val INLINED_FUNCTION_DEFAULT_ARGUMENTS by IrStatementOriginImpl
|
||||||
|
|||||||
+13
-13
@@ -9,21 +9,21 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
|
||||||
|
|
||||||
object JsLoweredDeclarationOrigin {
|
object JsLoweredDeclarationOrigin {
|
||||||
object JS_INTRINSICS_STUB : IrDeclarationOriginImpl("JS_INTRINSICS_STUB")
|
val JS_INTRINSICS_STUB by IrDeclarationOriginImpl
|
||||||
object JS_CLOSURE_BOX_CLASS_DECLARATION : IrDeclarationOriginImpl("JS_CLOSURE_BOX_CLASS_DECLARATION")
|
val JS_CLOSURE_BOX_CLASS_DECLARATION by IrDeclarationOriginImpl
|
||||||
object BRIDGE_WITH_STABLE_NAME : IrDeclarationOriginImpl("BRIDGE_WITH_STABLE_NAME")
|
val BRIDGE_WITH_STABLE_NAME by IrDeclarationOriginImpl
|
||||||
object BRIDGE_WITHOUT_STABLE_NAME : IrDeclarationOriginImpl("BRIDGE_WITHOUT_STABLE_NAME")
|
val BRIDGE_WITHOUT_STABLE_NAME by IrDeclarationOriginImpl
|
||||||
object BRIDGE_PROPERTY_ACCESSOR : IrDeclarationOriginImpl("BRIDGE_PROPERTY_ACCESSOR")
|
val BRIDGE_PROPERTY_ACCESSOR by IrDeclarationOriginImpl
|
||||||
object OBJECT_GET_INSTANCE_FUNCTION : IrDeclarationOriginImpl("OBJECT_GET_INSTANCE_FUNCTION")
|
val OBJECT_GET_INSTANCE_FUNCTION by IrDeclarationOriginImpl
|
||||||
object JS_SHADOWED_EXPORT : IrDeclarationOriginImpl("JS_SHADOWED_EXPORT")
|
val JS_SHADOWED_EXPORT by IrDeclarationOriginImpl
|
||||||
object JS_SUPER_CONTEXT_PARAMETER : IrDeclarationOriginImpl("JS_SUPER_CONTEXT_PARAMETER")
|
val JS_SUPER_CONTEXT_PARAMETER by IrDeclarationOriginImpl
|
||||||
object JS_SHADOWED_DEFAULT_PARAMETER : IrDeclarationOriginImpl("JS_SHADOWED_DEFAULT_PARAMETER")
|
val JS_SHADOWED_DEFAULT_PARAMETER by IrDeclarationOriginImpl
|
||||||
object ENUM_GET_INSTANCE_FUNCTION : IrDeclarationOriginImpl("ENUM_GET_INSTANCE_FUNCTION")
|
val ENUM_GET_INSTANCE_FUNCTION by IrDeclarationOriginImpl
|
||||||
|
|
||||||
fun isBridgeDeclarationOrigin(origin: IrDeclarationOrigin) = when (origin) {
|
fun isBridgeDeclarationOrigin(origin: IrDeclarationOrigin) = when (origin) {
|
||||||
is BRIDGE_WITH_STABLE_NAME -> true
|
BRIDGE_WITH_STABLE_NAME -> true
|
||||||
is BRIDGE_WITHOUT_STABLE_NAME -> true
|
BRIDGE_WITHOUT_STABLE_NAME -> true
|
||||||
is BRIDGE_PROPERTY_ACCESSOR -> true
|
BRIDGE_PROPERTY_ACCESSOR -> true
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.ir.util.parentAsClass
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
object JsIrBuilder {
|
object JsIrBuilder {
|
||||||
object SYNTHESIZED_DECLARATION : IrDeclarationOriginImpl("SYNTHESIZED_DECLARATION")
|
val SYNTHESIZED_DECLARATION by IrDeclarationOriginImpl
|
||||||
|
|
||||||
fun buildCall(
|
fun buildCall(
|
||||||
target: IrSimpleFunctionSymbol,
|
target: IrSimpleFunctionSymbol,
|
||||||
|
|||||||
+3
-3
@@ -469,9 +469,9 @@ class CallableReferenceLowering(private val context: CommonBackendContext) : Bod
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
object LAMBDA_IMPL : IrDeclarationOriginImpl("LAMBDA_IMPL")
|
val LAMBDA_IMPL by IrDeclarationOriginImpl
|
||||||
object FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
|
val FUNCTION_REFERENCE_IMPL by IrDeclarationOriginImpl
|
||||||
object GENERATED_MEMBER_IN_CALLABLE_REFERENCE : IrDeclarationOriginImpl("GENERATED_MEMBER_IN_CALLABLE_REFERENCE")
|
val GENERATED_MEMBER_IN_CALLABLE_REFERENCE by IrDeclarationOriginImpl
|
||||||
|
|
||||||
val BOUND_RECEIVER_NAME = Name.identifier("\$boundThis")
|
val BOUND_RECEIVER_NAME = Name.identifier("\$boundThis")
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.ir.util.isSubclassOf
|
|||||||
import org.jetbrains.kotlin.ir.util.parentAsClass
|
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
object ES6_THROWABLE_CONSTRUCTOR_SLOT : IrDeclarationOriginImpl("ES6_THROWABLE_CONSTRUCTOR_SLOT")
|
val ES6_THROWABLE_CONSTRUCTOR_SLOT by IrDeclarationOriginImpl
|
||||||
/**
|
/**
|
||||||
* Capture stack trace in primary constructors of Throwable
|
* Capture stack trace in primary constructors of Throwable
|
||||||
*/
|
*/
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.util.transformFlat
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.utils.memoryOptimizedMap
|
import org.jetbrains.kotlin.utils.memoryOptimizedMap
|
||||||
|
|
||||||
private object SCRIPT_FUNCTION : IrDeclarationOriginImpl("SCRIPT_FUNCTION")
|
private val SCRIPT_FUNCTION by IrDeclarationOriginImpl
|
||||||
|
|
||||||
class CreateScriptFunctionsPhase(val context: CommonBackendContext) : FileLoweringPass {
|
class CreateScriptFunctionsPhase(val context: CommonBackendContext) : FileLoweringPass {
|
||||||
override fun lower(irFile: IrFile) {
|
override fun lower(irFile: IrFile) {
|
||||||
|
|||||||
+2
-2
@@ -30,8 +30,8 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
|||||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||||
import org.jetbrains.kotlin.utils.memoryOptimizedPlus
|
import org.jetbrains.kotlin.utils.memoryOptimizedPlus
|
||||||
|
|
||||||
object ES6_BOX_PARAMETER : IrDeclarationOriginImpl("ES6_BOX_PARAMETER")
|
val ES6_BOX_PARAMETER by IrDeclarationOriginImpl
|
||||||
object ES6_BOX_PARAMETER_DEFAULT_RESOLUTION : IrStatementOriginImpl("ES6_BOX_PARAMETER_DEFAULT_RESOLUTION")
|
val ES6_BOX_PARAMETER_DEFAULT_RESOLUTION by IrStatementOriginImpl
|
||||||
|
|
||||||
val IrValueParameter.isBoxParameter: Boolean
|
val IrValueParameter.isBoxParameter: Boolean
|
||||||
get() = origin == ES6_BOX_PARAMETER
|
get() = origin == ES6_BOX_PARAMETER
|
||||||
|
|||||||
+7
-7
@@ -29,13 +29,13 @@ import org.jetbrains.kotlin.utils.memoryOptimizedMap
|
|||||||
import org.jetbrains.kotlin.utils.memoryOptimizedPlus
|
import org.jetbrains.kotlin.utils.memoryOptimizedPlus
|
||||||
import org.jetbrains.kotlin.utils.newHashMapWithExpectedSize
|
import org.jetbrains.kotlin.utils.newHashMapWithExpectedSize
|
||||||
|
|
||||||
object ES6_INIT_CALL : IrStatementOriginImpl("ES6_INIT_CALL")
|
val ES6_INIT_CALL by IrStatementOriginImpl
|
||||||
object ES6_CONSTRUCTOR_REPLACEMENT : IrDeclarationOriginImpl("ES6_CONSTRUCTOR_REPLACEMENT")
|
val ES6_CONSTRUCTOR_REPLACEMENT by IrDeclarationOriginImpl
|
||||||
object ES6_SYNTHETIC_EXPORT_CONSTRUCTOR: IrDeclarationOriginImpl("ES6_SYNTHETIC_EXPORT_CONSTRUCTOR")
|
val ES6_SYNTHETIC_EXPORT_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||||
object ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT : IrDeclarationOriginImpl("ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT")
|
val ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT by IrDeclarationOriginImpl
|
||||||
object ES6_INIT_FUNCTION : IrDeclarationOriginImpl("ES6_INIT_FUNCTION")
|
val ES6_INIT_FUNCTION by IrDeclarationOriginImpl
|
||||||
object ES6_DELEGATING_CONSTRUCTOR_REPLACEMENT : IrStatementOriginImpl("ES6_DELEGATING_CONSTRUCTOR_REPLACEMENT")
|
val ES6_DELEGATING_CONSTRUCTOR_REPLACEMENT by IrStatementOriginImpl
|
||||||
object ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT : IrDeclarationOriginImpl("ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT")
|
val ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT by IrDeclarationOriginImpl
|
||||||
|
|
||||||
val IrDeclaration.isEs6ConstructorReplacement: Boolean
|
val IrDeclaration.isEs6ConstructorReplacement: Boolean
|
||||||
get() = origin == ES6_CONSTRUCTOR_REPLACEMENT || origin == ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT
|
get() = origin == ES6_CONSTRUCTOR_REPLACEMENT || origin == ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT
|
||||||
|
|||||||
+1
-1
@@ -44,7 +44,7 @@ class JsCodeOutliningLowering(val backendContext: JsIrBackendContext) : BodyLowe
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val OUTLINED_JS_CODE_ORIGIN = object : IrDeclarationOriginImpl("OUTLINED_JS_CODE") {}
|
val OUTLINED_JS_CODE_ORIGIN = IrDeclarationOriginImpl("OUTLINED_JS_CODE")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -42,7 +42,9 @@ class PrimaryConstructorLowering(val context: JsCommonBackendContext) : Declarat
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
object SYNTHETIC_PRIMARY_CONSTRUCTOR : IrDeclarationOriginImpl("SYNTHETIC_PRIMARY_CONSTRUCTOR")
|
companion object {
|
||||||
|
val SYNTHETIC_PRIMARY_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||||
|
}
|
||||||
|
|
||||||
private val unitType = context.irBuiltIns.unitType
|
private val unitType = context.irBuiltIns.unitType
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.utils.memoryOptimizedPlus
|
import org.jetbrains.kotlin.utils.memoryOptimizedPlus
|
||||||
|
|
||||||
private val STATIC_THIS_PARAMETER = object : IrDeclarationOriginImpl("STATIC_THIS_PARAMETER") {}
|
private val STATIC_THIS_PARAMETER by IrDeclarationOriginImpl
|
||||||
|
|
||||||
class PrivateMembersLowering(val context: JsIrBackendContext) : DeclarationTransformer {
|
class PrivateMembersLowering(val context: JsIrBackendContext) : DeclarationTransformer {
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -164,7 +164,7 @@ class PropertyLazyInitLowering(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
object PROPERTY_INIT_FUN_CALL : IrStatementOriginImpl("PROPERTY_INIT_FUN_CALL")
|
val PROPERTY_INIT_FUN_CALL by IrStatementOriginImpl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -271,6 +271,6 @@ class PropertyReferenceLowering(private val context: JsIrBackendContext) : BodyL
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
object PROPERTY_REFERENCE_FACTORY : IrDeclarationOriginImpl("PROPERTY_REFERNCE_FACTORY")
|
val PROPERTY_REFERENCE_FACTORY = IrDeclarationOriginImpl("PROPERTY_REFERNCE_FACTORY")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -42,7 +42,9 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
|
|
||||||
private var IrFunction.coroutineConstructor by context.mapping.suspendFunctionToCoroutineConstructor
|
private var IrFunction.coroutineConstructor by context.mapping.suspendFunctionToCoroutineConstructor
|
||||||
|
|
||||||
protected object DECLARATION_ORIGIN_COROUTINE_IMPL : IrDeclarationOriginImpl("COROUTINE_IMPL")
|
protected companion object {
|
||||||
|
val DECLARATION_ORIGIN_COROUTINE_IMPL = IrDeclarationOriginImpl("COROUTINE_IMPL")
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract val stateMachineMethodName: Name
|
protected abstract val stateMachineMethodName: Name
|
||||||
protected abstract fun getCoroutineBaseClass(function: IrFunction): IrClassSymbol
|
protected abstract fun getCoroutineBaseClass(function: IrFunction): IrClassSymbol
|
||||||
|
|||||||
+4
-4
@@ -169,10 +169,10 @@ class IrElementToJsStatementTransformer : BaseIrElementToJsNodeTransformer<JsSta
|
|||||||
val jsInitializer = value?.accept(IrElementToJsExpressionTransformer(), context)
|
val jsInitializer = value?.accept(IrElementToJsExpressionTransformer(), context)
|
||||||
|
|
||||||
val syntheticVariable = when (declaration.origin) {
|
val syntheticVariable = when (declaration.origin) {
|
||||||
is IrDeclarationOrigin.IR_TEMPORARY_VARIABLE -> true
|
IrDeclarationOrigin.IR_TEMPORARY_VARIABLE -> true
|
||||||
is IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER -> true
|
IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER -> true
|
||||||
is IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER -> true
|
IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER -> true
|
||||||
is ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT -> true
|
ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT -> true
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -58,7 +58,7 @@ internal class FragmentLocalFunctionPatchLowering(
|
|||||||
override fun visitCall(expression: IrCall): IrExpression {
|
override fun visitCall(expression: IrCall): IrExpression {
|
||||||
expression.transformChildrenVoid(this)
|
expression.transformChildrenVoid(this)
|
||||||
val localDeclarationsDataKey = when (expression.symbol.owner.origin) {
|
val localDeclarationsDataKey = when (expression.symbol.owner.origin) {
|
||||||
is IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER -> context.mapping.defaultArgumentsOriginalFunction[expression.symbol.owner]
|
IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER -> context.mapping.defaultArgumentsOriginalFunction[expression.symbol.owner]
|
||||||
else -> expression.symbol.owner
|
else -> expression.symbol.owner
|
||||||
}
|
}
|
||||||
val localsData = localDeclarationsData[localDeclarationsDataKey] ?: return expression
|
val localsData = localDeclarationsData[localDeclarationsDataKey] ?: return expression
|
||||||
|
|||||||
+3
-1
@@ -506,7 +506,9 @@ internal class JvmMultiFieldValueClassLowering(context: JvmBackendContext) : Jvm
|
|||||||
return listOf(replacement)
|
return listOf(replacement)
|
||||||
}
|
}
|
||||||
|
|
||||||
private object UNSAFE_MFVC_SET_ORIGIN : IrStatementOrigin
|
private companion object {
|
||||||
|
private val UNSAFE_MFVC_SET_ORIGIN by IrStatementOriginImpl
|
||||||
|
}
|
||||||
|
|
||||||
private fun RootMfvcNode.replaceMfvcNotStaticFields() {
|
private fun RootMfvcNode.replaceMfvcNotStaticFields() {
|
||||||
val fieldsToRemove = mfvc.fields.filter { !it.isStatic }.toList()
|
val fieldsToRemove = mfvc.fields.filter { !it.isStatic }.toList()
|
||||||
|
|||||||
+1
-1
@@ -439,7 +439,7 @@ class JvmOptimizationLowering(val context: JvmBackendContext) : FileLoweringPass
|
|||||||
if (!hasSameLineNumber(argument, expression)) {
|
if (!hasSameLineNumber(argument, expression)) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
return rewriteCompoundAssignmentAsPrefixIncrDecr(expression, argument, expression.origin is IrStatementOrigin.MINUSEQ)
|
return rewriteCompoundAssignmentAsPrefixIncrDecr(expression, argument, expression.origin == IrStatementOrigin.MINUSEQ)
|
||||||
}
|
}
|
||||||
IrStatementOrigin.EQ -> {
|
IrStatementOrigin.EQ -> {
|
||||||
val value = expression.value
|
val value = expression.value
|
||||||
|
|||||||
+4
-2
@@ -52,8 +52,10 @@ internal val propertyReferencePhase = makeIrFilePhase(
|
|||||||
)
|
)
|
||||||
|
|
||||||
internal class PropertyReferenceLowering(val context: JvmBackendContext) : IrElementTransformerVoidWithContext(), FileLoweringPass {
|
internal class PropertyReferenceLowering(val context: JvmBackendContext) : IrElementTransformerVoidWithContext(), FileLoweringPass {
|
||||||
// Marking a property reference with this origin causes it to not generate a class.
|
companion object {
|
||||||
object REFLECTED_PROPERTY_REFERENCE : IrStatementOriginImpl("REFLECTED_PROPERTY_REFERENCE")
|
// Marking a property reference with this origin causes it to not generate a class.
|
||||||
|
val REFLECTED_PROPERTY_REFERENCE by IrStatementOriginImpl
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: join IrLocalDelegatedPropertyReference and IrPropertyReference via the class hierarchy?
|
// TODO: join IrLocalDelegatedPropertyReference and IrPropertyReference via the class hierarchy?
|
||||||
private val IrMemberAccessExpression<*>.getter: IrSimpleFunctionSymbol?
|
private val IrMemberAccessExpression<*>.getter: IrSimpleFunctionSymbol?
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ object InlineClassAbi {
|
|||||||
* perform inline class mangling and so in the absence of jvm signatures in the metadata we need to avoid
|
* perform inline class mangling and so in the absence of jvm signatures in the metadata we need to avoid
|
||||||
* inline class mangling as well in the function references used as arguments to the signature string intrinsic.
|
* inline class mangling as well in the function references used as arguments to the signature string intrinsic.
|
||||||
*/
|
*/
|
||||||
object UNMANGLED_FUNCTION_REFERENCE : IrStatementOriginImpl("UNMANGLED_FUNCTION_REFERENCE")
|
val UNMANGLED_FUNCTION_REFERENCE by IrStatementOriginImpl
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unwraps inline class types to their underlying representation.
|
* Unwraps inline class types to their underlying representation.
|
||||||
|
|||||||
+50
-54
@@ -5,60 +5,56 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.jvm
|
package org.jetbrains.kotlin.backend.jvm
|
||||||
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
|
||||||
|
|
||||||
interface JvmLoweredDeclarationOrigin : IrDeclarationOrigin {
|
object JvmLoweredDeclarationOrigin {
|
||||||
object CLASS_STATIC_INITIALIZER : IrDeclarationOriginImpl("CLASS_STATIC_INITIALIZER")
|
val CLASS_STATIC_INITIALIZER by IrDeclarationOriginImpl
|
||||||
object DEFAULT_IMPLS : IrDeclarationOriginImpl("DEFAULT_IMPLS")
|
val DEFAULT_IMPLS by IrDeclarationOriginImpl
|
||||||
object SUPER_INTERFACE_METHOD_BRIDGE : IrDeclarationOriginImpl("SUPER_INTERFACE_METHOD_BRIDGE")
|
val SUPER_INTERFACE_METHOD_BRIDGE by IrDeclarationOriginImpl
|
||||||
object FIELD_FOR_OUTER_THIS : IrDeclarationOriginImpl("FIELD_FOR_OUTER_THIS")
|
val FIELD_FOR_OUTER_THIS by IrDeclarationOriginImpl
|
||||||
object LAMBDA_IMPL : IrDeclarationOriginImpl("LAMBDA_IMPL")
|
val LAMBDA_IMPL by IrDeclarationOriginImpl
|
||||||
object FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL", isSynthetic = true)
|
val FUNCTION_REFERENCE_IMPL by IrDeclarationOriginImpl.Synthetic
|
||||||
object SYNTHETIC_ACCESSOR : IrDeclarationOriginImpl("SYNTHETIC_ACCESSOR", isSynthetic = true)
|
val SYNTHETIC_ACCESSOR by IrDeclarationOriginImpl.Synthetic
|
||||||
object SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR :
|
val SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR by IrDeclarationOriginImpl.Synthetic
|
||||||
IrDeclarationOriginImpl("SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR", isSynthetic = true)
|
val SYNTHETIC_MARKER_PARAMETER by IrDeclarationOriginImpl.Synthetic
|
||||||
object SYNTHETIC_MARKER_PARAMETER : IrDeclarationOriginImpl("SYNTHETIC_MARKER_PARAMETER", isSynthetic = true)
|
val TO_ARRAY by IrDeclarationOriginImpl
|
||||||
object TO_ARRAY : IrDeclarationOriginImpl("TO_ARRAY")
|
val JVM_STATIC_WRAPPER by IrDeclarationOriginImpl
|
||||||
object JVM_STATIC_WRAPPER : IrDeclarationOriginImpl("JVM_STATIC_WRAPPER")
|
val JVM_OVERLOADS_WRAPPER by IrDeclarationOriginImpl
|
||||||
object JVM_OVERLOADS_WRAPPER : IrDeclarationOriginImpl("JVM_OVERLOADS_WRAPPER")
|
val SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS by IrDeclarationOriginImpl.Synthetic
|
||||||
object SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS :
|
val GENERATED_PROPERTY_REFERENCE by IrDeclarationOriginImpl.Synthetic
|
||||||
IrDeclarationOriginImpl("SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS", isSynthetic = true)
|
val GENERATED_MEMBER_IN_CALLABLE_REFERENCE by IrDeclarationOriginImpl
|
||||||
object GENERATED_PROPERTY_REFERENCE : IrDeclarationOriginImpl("GENERATED_PROPERTY_REFERENCE", isSynthetic = true)
|
val ENUM_MAPPINGS_FOR_WHEN by IrDeclarationOriginImpl.Synthetic
|
||||||
object GENERATED_MEMBER_IN_CALLABLE_REFERENCE : IrDeclarationOriginImpl("GENERATED_MEMBER_IN_CALLABLE_REFERENCE", isSynthetic = false)
|
val ENUM_MAPPINGS_FOR_ENTRIES by IrDeclarationOriginImpl.Synthetic
|
||||||
object ENUM_MAPPINGS_FOR_WHEN : IrDeclarationOriginImpl("ENUM_MAPPINGS_FOR_WHEN", isSynthetic = true)
|
val SYNTHETIC_INLINE_CLASS_MEMBER by IrDeclarationOriginImpl.Synthetic
|
||||||
object ENUM_MAPPINGS_FOR_ENTRIES : IrDeclarationOriginImpl("ENUM_MAPPINGS_FOR_ENTRIES", isSynthetic = true)
|
val SYNTHETIC_MULTI_FIELD_VALUE_CLASS_MEMBER by IrDeclarationOriginImpl.Synthetic
|
||||||
object SYNTHETIC_INLINE_CLASS_MEMBER : IrDeclarationOriginImpl("SYNTHETIC_INLINE_CLASS_MEMBER", isSynthetic = true)
|
val INLINE_CLASS_GENERATED_IMPL_METHOD by IrDeclarationOriginImpl
|
||||||
object SYNTHETIC_MULTI_FIELD_VALUE_CLASS_MEMBER :
|
val MULTI_FIELD_VALUE_CLASS_GENERATED_IMPL_METHOD by IrDeclarationOriginImpl
|
||||||
IrDeclarationOriginImpl("SYNTHETIC_MULTI_FIELD_VALUE_CLASS_MEMBER", isSynthetic = true)
|
val STATIC_INLINE_CLASS_REPLACEMENT by IrDeclarationOriginImpl
|
||||||
object INLINE_CLASS_GENERATED_IMPL_METHOD : IrDeclarationOriginImpl("INLINE_CLASS_GENERATED_IMPL_METHOD")
|
val STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT by IrDeclarationOriginImpl
|
||||||
object MULTI_FIELD_VALUE_CLASS_GENERATED_IMPL_METHOD : IrDeclarationOriginImpl("MULTI_FIELD_VALUE_CLASS_GENERATED_IMPL_METHOD")
|
val STATIC_INLINE_CLASS_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||||
object STATIC_INLINE_CLASS_REPLACEMENT : IrDeclarationOriginImpl("STATIC_INLINE_CLASS_REPLACEMENT")
|
val STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||||
object STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT : IrDeclarationOriginImpl("STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT")
|
val GENERATED_ASSERTION_ENABLED_FIELD by IrDeclarationOriginImpl.Synthetic
|
||||||
object STATIC_INLINE_CLASS_CONSTRUCTOR : IrDeclarationOriginImpl("STATIC_INLINE_CLASS_CONSTRUCTOR")
|
val GENERATED_MULTI_FIELD_VALUE_CLASS_PARAMETER by IrDeclarationOriginImpl
|
||||||
object STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR : IrDeclarationOriginImpl("STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR")
|
val TEMPORARY_MULTI_FIELD_VALUE_CLASS_PARAMETER by IrDeclarationOriginImpl
|
||||||
object GENERATED_ASSERTION_ENABLED_FIELD : IrDeclarationOriginImpl("GENERATED_ASSERTION_ENABLED_FIELD", isSynthetic = true)
|
val TEMPORARY_MULTI_FIELD_VALUE_CLASS_VARIABLE by IrDeclarationOriginImpl
|
||||||
object GENERATED_MULTI_FIELD_VALUE_CLASS_PARAMETER : IrDeclarationOriginImpl("GENERATED_MULTI_FIELD_VALUE_CLASS_PARAMETER")
|
val MULTI_FIELD_VALUE_CLASS_REPRESENTATION_VARIABLE by IrDeclarationOriginImpl
|
||||||
object TEMPORARY_MULTI_FIELD_VALUE_CLASS_PARAMETER : IrDeclarationOriginImpl("TEMPORARY_MULTI_FIELD_VALUE_CLASS_PARAMETER")
|
val GENERATED_EXTENDED_MAIN by IrDeclarationOriginImpl.Synthetic
|
||||||
object TEMPORARY_MULTI_FIELD_VALUE_CLASS_VARIABLE : IrDeclarationOriginImpl("TEMPORARY_MULTI_FIELD_VALUE_CLASS_VARIABLE")
|
val SUSPEND_IMPL_STATIC_FUNCTION by IrDeclarationOriginImpl.Synthetic
|
||||||
object MULTI_FIELD_VALUE_CLASS_REPRESENTATION_VARIABLE : IrDeclarationOriginImpl("MULTI_FIELD_VALUE_CLASS_REPRESENTATION_VARIABLE")
|
val INTERFACE_COMPANION_PRIVATE_INSTANCE by IrDeclarationOriginImpl.Synthetic
|
||||||
object GENERATED_EXTENDED_MAIN : IrDeclarationOriginImpl("GENERATED_EXTENDED_MAIN", isSynthetic = true)
|
val POLYMORPHIC_SIGNATURE_INSTANTIATION by IrDeclarationOriginImpl.Synthetic
|
||||||
object SUSPEND_IMPL_STATIC_FUNCTION : IrDeclarationOriginImpl("SUSPEND_IMPL_STATIC_FUNCTION", isSynthetic = true)
|
val ENUM_CONSTRUCTOR_SYNTHETIC_PARAMETER by IrDeclarationOriginImpl.Synthetic
|
||||||
object INTERFACE_COMPANION_PRIVATE_INSTANCE : IrDeclarationOriginImpl("INTERFACE_COMPANION_PRIVATE_INSTANCE", isSynthetic = true)
|
val OBJECT_SUPER_CONSTRUCTOR_PARAMETER by IrDeclarationOriginImpl.Synthetic
|
||||||
object POLYMORPHIC_SIGNATURE_INSTANTIATION : IrDeclarationOriginImpl("POLYMORPHIC_SIGNATURE_INSTANTIATION", isSynthetic = true)
|
val CONTINUATION_CLASS by IrDeclarationOriginImpl
|
||||||
object ENUM_CONSTRUCTOR_SYNTHETIC_PARAMETER : IrDeclarationOriginImpl("ENUM_CONSTRUCTOR_SYNTHETIC_PARAMETER", isSynthetic = true)
|
val SUSPEND_LAMBDA by IrDeclarationOriginImpl
|
||||||
object OBJECT_SUPER_CONSTRUCTOR_PARAMETER : IrDeclarationOriginImpl("OBJECT_SUPER_CONSTRUCTOR_PARAMETER", isSynthetic = true)
|
val FOR_INLINE_STATE_MACHINE_TEMPLATE by IrDeclarationOriginImpl
|
||||||
object CONTINUATION_CLASS : IrDeclarationOriginImpl("CONTINUATION_CLASS")
|
val FOR_INLINE_STATE_MACHINE_TEMPLATE_CAPTURES_CROSSINLINE by IrDeclarationOriginImpl
|
||||||
object SUSPEND_LAMBDA : IrDeclarationOriginImpl("SUSPEND_LAMBDA")
|
val CONTINUATION_CLASS_RESULT_FIELD by IrDeclarationOriginImpl.Synthetic
|
||||||
object FOR_INLINE_STATE_MACHINE_TEMPLATE : IrDeclarationOriginImpl("FOR_INLINE_TEMPLATE")
|
val COMPANION_PROPERTY_BACKING_FIELD by IrDeclarationOriginImpl
|
||||||
object FOR_INLINE_STATE_MACHINE_TEMPLATE_CAPTURES_CROSSINLINE : IrDeclarationOriginImpl("FOR_INLINE_TEMPLATE_CROSSINLINE")
|
val FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE by IrDeclarationOriginImpl
|
||||||
object CONTINUATION_CLASS_RESULT_FIELD: IrDeclarationOriginImpl("CONTINUATION_CLASS_RESULT_FIELD", isSynthetic = true)
|
val ABSTRACT_BRIDGE_STUB by IrDeclarationOriginImpl
|
||||||
object COMPANION_PROPERTY_BACKING_FIELD : IrDeclarationOriginImpl("COMPANION_PROPERTY_BACKING_FIELD")
|
val INVOKEDYNAMIC_CALL_TARGET by IrDeclarationOriginImpl
|
||||||
object FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE : IrDeclarationOriginImpl("FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE")
|
val INLINE_LAMBDA by IrDeclarationOriginImpl
|
||||||
object ABSTRACT_BRIDGE_STUB : IrDeclarationOriginImpl("ABSTRACT_BRIDGE_STUB")
|
val PROXY_FUN_FOR_METAFACTORY by IrDeclarationOriginImpl
|
||||||
object INVOKEDYNAMIC_CALL_TARGET : IrDeclarationOriginImpl("INVOKEDYNAMIC_CALL_TARGET")
|
val SYNTHETIC_PROXY_FUN_FOR_METAFACTORY by IrDeclarationOriginImpl.Synthetic
|
||||||
object INLINE_LAMBDA : IrDeclarationOriginImpl("INLINE_LAMBDA")
|
val DESERIALIZE_LAMBDA_FUN by IrDeclarationOriginImpl.Synthetic
|
||||||
object PROXY_FUN_FOR_METAFACTORY : IrDeclarationOriginImpl("PROXY_FUN_FOR_METAFACTORY")
|
|
||||||
object SYNTHETIC_PROXY_FUN_FOR_METAFACTORY : IrDeclarationOriginImpl("SYNTHETIC_PROXY_FUN_FOR_METAFACTORY", isSynthetic = true)
|
|
||||||
object DESERIALIZE_LAMBDA_FUN : IrDeclarationOriginImpl("DESERIALIZE_LAMBDA_FUN", isSynthetic = true)
|
|
||||||
}
|
}
|
||||||
|
|||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.backend.jvm
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
|
||||||
|
|
||||||
|
object JvmLoweredStatementOrigin {
|
||||||
|
val DEFAULT_STUB_CALL_TO_IMPLEMENTATION by IrStatementOriginImpl
|
||||||
|
val DO_WHILE_COUNTER_LOOP by IrStatementOriginImpl
|
||||||
|
val INLINE_LAMBDA by IrStatementOriginImpl
|
||||||
|
val FAKE_CONTINUATION by IrStatementOriginImpl
|
||||||
|
|
||||||
|
val FOLDED_SAFE_CALL by IrStatementOriginImpl
|
||||||
|
val FOLDED_ELVIS by IrStatementOriginImpl
|
||||||
|
}
|
||||||
+1
-2
@@ -387,8 +387,7 @@ class MemoizedMultiFieldValueClassReplacements(
|
|||||||
|
|
||||||
private val IrProperty.backingFieldIfNotToRemove get() = backingField?.takeUnless { it in getFieldsToRemove(this.parentAsClass) }
|
private val IrProperty.backingFieldIfNotToRemove get() = backingField?.takeUnless { it in getFieldsToRemove(this.parentAsClass) }
|
||||||
|
|
||||||
@Suppress("ClassName")
|
private val FLATTENED_NOTHING_DEFAULT_VALUE by IrStatementOriginImpl
|
||||||
private object FLATTENED_NOTHING_DEFAULT_VALUE : IrStatementOriginImpl("FLATTENED_NOTHING_DEFAULT_VALUE")
|
|
||||||
|
|
||||||
fun mapFunctionMfvcStructures(
|
fun mapFunctionMfvcStructures(
|
||||||
irBuilder: IrBlockBuilder,
|
irBuilder: IrBlockBuilder,
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.backend.jvm
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
|
|
||||||
|
|
||||||
interface JvmLoweredStatementOrigin {
|
|
||||||
object DEFAULT_STUB_CALL_TO_IMPLEMENTATION : IrStatementOriginImpl("DEFAULT_STUB_CALL_TO_IMPLEMENTATION")
|
|
||||||
object DO_WHILE_COUNTER_LOOP: IrStatementOriginImpl("DO_WHILE_COUNTER_LOOP")
|
|
||||||
object INLINE_LAMBDA : IrStatementOriginImpl("INLINE_LAMBDA")
|
|
||||||
object FAKE_CONTINUATION : IrStatementOriginImpl("FAKE_CONTINUATION")
|
|
||||||
|
|
||||||
object FOLDED_SAFE_CALL : IrStatementOriginImpl("FOLDED_SAFE_CALL")
|
|
||||||
object FOLDED_ELVIS : IrStatementOriginImpl("FOLDED_ELVIS")
|
|
||||||
}
|
|
||||||
+3
-1
@@ -310,5 +310,7 @@ internal class WasmPropertyReferenceLowering(val context: WasmBackendContext) :
|
|||||||
return type.classifier == expectedClass
|
return type.classifier == expectedClass
|
||||||
}
|
}
|
||||||
|
|
||||||
private object DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION : IrDeclarationOriginImpl("KPROPERTIES_FOR_DELEGATION")
|
private companion object {
|
||||||
|
private val DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION = IrDeclarationOriginImpl("KPROPERTIES_FOR_DELEGATION")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.ir.util.isElseBranch
|
|||||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
private object OPTIMISED_WHEN_SUBJECT : IrDeclarationOriginImpl("OPTIMISED_WHEN_SUBJECT")
|
private val OPTIMISED_WHEN_SUBJECT by IrDeclarationOriginImpl
|
||||||
|
|
||||||
class WasmStringSwitchOptimizerLowering(
|
class WasmStringSwitchOptimizerLowering(
|
||||||
private val context: WasmBackendContext
|
private val context: WasmBackendContext
|
||||||
|
|||||||
+2
-2
@@ -26,8 +26,8 @@ import org.jetbrains.kotlin.ir.types.*
|
|||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
internal val TEMP_CLASS_FOR_INTERPRETER = object : IrDeclarationOriginImpl("TEMP_CLASS_FOR_INTERPRETER") {}
|
internal val TEMP_CLASS_FOR_INTERPRETER = IrDeclarationOriginImpl("TEMP_CLASS_FOR_INTERPRETER")
|
||||||
internal val TEMP_FUNCTION_FOR_INTERPRETER = object : IrDeclarationOriginImpl("TEMP_FUNCTION_FOR_INTERPRETER") {}
|
internal val TEMP_FUNCTION_FOR_INTERPRETER = IrDeclarationOriginImpl("TEMP_FUNCTION_FOR_INTERPRETER")
|
||||||
|
|
||||||
@Deprecated("Please migrate to `org.jetbrains.kotlin.ir.util.toIrConst`", level = DeprecationLevel.HIDDEN)
|
@Deprecated("Please migrate to `org.jetbrains.kotlin.ir.util.toIrConst`", level = DeprecationLevel.HIDDEN)
|
||||||
fun Any?.toIrConst(irType: IrType, startOffset: Int = SYNTHETIC_OFFSET, endOffset: Int = SYNTHETIC_OFFSET): IrConst<*> =
|
fun Any?.toIrConst(irType: IrType, startOffset: Int = SYNTHETIC_OFFSET, endOffset: Int = SYNTHETIC_OFFSET): IrConst<*> =
|
||||||
|
|||||||
+2
-2
@@ -77,8 +77,8 @@ abstract class IrAbstractDescriptorBasedFunctionFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val classOrigin = object : IrDeclarationOriginImpl("FUNCTION_INTERFACE_CLASS") {}
|
val classOrigin = IrDeclarationOriginImpl("FUNCTION_INTERFACE_CLASS")
|
||||||
val memberOrigin = object : IrDeclarationOriginImpl("FUNCTION_INTERFACE_MEMBER") {}
|
val memberOrigin = IrDeclarationOriginImpl("FUNCTION_INTERFACE_MEMBER")
|
||||||
const val offset = SYNTHETIC_OFFSET
|
const val offset = SYNTHETIC_OFFSET
|
||||||
|
|
||||||
internal fun functionClassName(isK: Boolean, isSuspend: Boolean, arity: Int): String =
|
internal fun functionClassName(isK: Boolean, isSuspend: Boolean, arity: Int): String =
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ abstract class IrBuiltIns {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val KOTLIN_INTERNAL_IR_FQN = FqName("kotlin.internal.ir")
|
val KOTLIN_INTERNAL_IR_FQN = FqName("kotlin.internal.ir")
|
||||||
val BUILTIN_OPERATOR = object : IrDeclarationOriginImpl("OPERATOR") {}
|
val BUILTIN_OPERATOR = IrDeclarationOriginImpl("OPERATOR")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+95
-83
@@ -6,86 +6,96 @@
|
|||||||
package org.jetbrains.kotlin.ir.declarations
|
package org.jetbrains.kotlin.ir.declarations
|
||||||
|
|
||||||
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
|
import org.jetbrains.kotlin.utils.DummyDelegate
|
||||||
|
import kotlin.properties.PropertyDelegateProvider
|
||||||
|
import kotlin.properties.ReadOnlyProperty
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
interface IrDeclarationOrigin {
|
interface IrDeclarationOrigin {
|
||||||
object DEFINED : IrDeclarationOriginImpl("DEFINED")
|
val name: String
|
||||||
object FAKE_OVERRIDE : IrDeclarationOriginImpl("FAKE_OVERRIDE")
|
val isSynthetic: Boolean
|
||||||
object FOR_LOOP_ITERATOR : IrDeclarationOriginImpl("FOR_LOOP_ITERATOR")
|
get() = false
|
||||||
object FOR_LOOP_VARIABLE : IrDeclarationOriginImpl("FOR_LOOP_VARIABLE")
|
|
||||||
object FOR_LOOP_IMPLICIT_VARIABLE : IrDeclarationOriginImpl("FOR_LOOP_IMPLICIT_VARIABLE")
|
|
||||||
object PROPERTY_BACKING_FIELD : IrDeclarationOriginImpl("PROPERTY_BACKING_FIELD")
|
|
||||||
object DEFAULT_PROPERTY_ACCESSOR : IrDeclarationOriginImpl("DEFAULT_PROPERTY_ACCESSOR")
|
|
||||||
object DELEGATE : IrDeclarationOriginImpl("DELEGATE", isSynthetic = true)
|
|
||||||
object PROPERTY_DELEGATE : IrDeclarationOriginImpl("PROPERTY_DELEGATE")
|
|
||||||
object DELEGATED_PROPERTY_ACCESSOR : IrDeclarationOriginImpl("DELEGATED_PROPERTY_ACCESSOR")
|
|
||||||
object DELEGATED_MEMBER : IrDeclarationOriginImpl("DELEGATED_MEMBER")
|
|
||||||
object ENUM_CLASS_SPECIAL_MEMBER : IrDeclarationOriginImpl("ENUM_CLASS_SPECIAL_MEMBER")
|
|
||||||
object FUNCTION_FOR_DEFAULT_PARAMETER : IrDeclarationOriginImpl("FUNCTION_FOR_DEFAULT_PARAMETER", isSynthetic = true)
|
|
||||||
object MASK_FOR_DEFAULT_FUNCTION : IrDeclarationOriginImpl("MASK_FOR_DEFAULT_FUNCTION", isSynthetic = true)
|
|
||||||
object DEFAULT_CONSTRUCTOR_MARKER : IrDeclarationOriginImpl("DEFAULT_CONSTRUCTOR_MARKER", isSynthetic = true)
|
|
||||||
object METHOD_HANDLER_IN_DEFAULT_FUNCTION : IrDeclarationOriginImpl("METHOD_HANDLER_IN_DEFAULT_FUNCTION", isSynthetic = true)
|
|
||||||
object MOVED_DISPATCH_RECEIVER : IrDeclarationOriginImpl("MOVED_DISPATCH_RECEIVER")
|
|
||||||
object MOVED_EXTENSION_RECEIVER : IrDeclarationOriginImpl("MOVED_EXTENSION_RECEIVER")
|
|
||||||
object MOVED_CONTEXT_RECEIVER : IrDeclarationOriginImpl("MOVED_CONTEXT_RECEIVER")
|
|
||||||
|
|
||||||
object FILE_CLASS : IrDeclarationOriginImpl("FILE_CLASS")
|
companion object {
|
||||||
object SYNTHETIC_FILE_CLASS : IrDeclarationOriginImpl("SYNTHETIC_FILE_CLASS", isSynthetic = true)
|
val DEFINED by IrDeclarationOriginImpl
|
||||||
object JVM_MULTIFILE_CLASS : IrDeclarationOriginImpl("JVM_MULTIFILE_CLASS")
|
val FAKE_OVERRIDE by IrDeclarationOriginImpl
|
||||||
object ERROR_CLASS : IrDeclarationOriginImpl("ERROR_CLASS")
|
val FOR_LOOP_ITERATOR by IrDeclarationOriginImpl
|
||||||
|
val FOR_LOOP_VARIABLE by IrDeclarationOriginImpl
|
||||||
|
val FOR_LOOP_IMPLICIT_VARIABLE by IrDeclarationOriginImpl
|
||||||
|
val PROPERTY_BACKING_FIELD by IrDeclarationOriginImpl
|
||||||
|
val DEFAULT_PROPERTY_ACCESSOR by IrDeclarationOriginImpl
|
||||||
|
val DELEGATE by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val PROPERTY_DELEGATE by IrDeclarationOriginImpl
|
||||||
|
val DELEGATED_PROPERTY_ACCESSOR by IrDeclarationOriginImpl
|
||||||
|
val DELEGATED_MEMBER by IrDeclarationOriginImpl
|
||||||
|
val ENUM_CLASS_SPECIAL_MEMBER by IrDeclarationOriginImpl
|
||||||
|
val FUNCTION_FOR_DEFAULT_PARAMETER by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val MASK_FOR_DEFAULT_FUNCTION by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val DEFAULT_CONSTRUCTOR_MARKER by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val METHOD_HANDLER_IN_DEFAULT_FUNCTION by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val MOVED_DISPATCH_RECEIVER by IrDeclarationOriginImpl
|
||||||
|
val MOVED_EXTENSION_RECEIVER by IrDeclarationOriginImpl
|
||||||
|
val MOVED_CONTEXT_RECEIVER by IrDeclarationOriginImpl
|
||||||
|
|
||||||
object SCRIPT_CLASS : IrDeclarationOriginImpl("SCRIPT_CLASS")
|
val FILE_CLASS by IrDeclarationOriginImpl
|
||||||
object SCRIPT_THIS_RECEIVER : IrDeclarationOriginImpl("SCRIPT_THIS_RECEIVER")
|
val SYNTHETIC_FILE_CLASS by IrDeclarationOriginImpl.Synthetic
|
||||||
object SCRIPT_STATEMENT : IrDeclarationOriginImpl("SCRIPT_STATEMENT")
|
val JVM_MULTIFILE_CLASS by IrDeclarationOriginImpl
|
||||||
object SCRIPT_EARLIER_SCRIPTS : IrDeclarationOriginImpl("SCRIPT_EARLIER_SCRIPTS")
|
val ERROR_CLASS by IrDeclarationOriginImpl
|
||||||
object SCRIPT_CALL_PARAMETER : IrDeclarationOriginImpl("SCRIPT_CALL_PARAMETER")
|
|
||||||
object SCRIPT_IMPLICIT_RECEIVER : IrDeclarationOriginImpl("SCRIPT_IMPLICIT_RECEIVER")
|
|
||||||
object SCRIPT_PROVIDED_PROPERTY : IrDeclarationOriginImpl("SCRIPT_PROVIDED_PROPERTY")
|
|
||||||
object SCRIPT_RESULT_PROPERTY : IrDeclarationOriginImpl("SCRIPT_RESULT_PROPERTY")
|
|
||||||
object GENERATED_DATA_CLASS_MEMBER : IrDeclarationOriginImpl("GENERATED_DATA_CLASS_MEMBER")
|
|
||||||
object GENERATED_SINGLE_FIELD_VALUE_CLASS_MEMBER : IrDeclarationOriginImpl("GENERATED_SINGLE_FIELD_VALUE_CLASS_MEMBER")
|
|
||||||
object GENERATED_MULTI_FIELD_VALUE_CLASS_MEMBER : IrDeclarationOriginImpl("GENERATED_MULTI_FIELD_VALUE_CLASS_MEMBER")
|
|
||||||
object LOCAL_FUNCTION : IrDeclarationOriginImpl("LOCAL_FUNCTION")
|
|
||||||
object LOCAL_FUNCTION_FOR_LAMBDA : IrDeclarationOriginImpl("LOCAL_FUNCTION_FOR_LAMBDA")
|
|
||||||
object CATCH_PARAMETER : IrDeclarationOriginImpl("CATCH_PARAMETER")
|
|
||||||
object UNDERSCORE_PARAMETER : IrDeclarationOriginImpl("UNDERSCORE_PARAMETER")
|
|
||||||
object DESTRUCTURED_OBJECT_PARAMETER : IrDeclarationOriginImpl("DESTRUCTURED_OBJECT_PARAMETER")
|
|
||||||
object INSTANCE_RECEIVER : IrDeclarationOriginImpl("INSTANCE_RECEIVER")
|
|
||||||
object PRIMARY_CONSTRUCTOR_PARAMETER : IrDeclarationOriginImpl("PRIMARY_CONSTRUCTOR_PARAMETER")
|
|
||||||
object IR_TEMPORARY_VARIABLE : IrDeclarationOriginImpl("IR_TEMPORARY_VARIABLE")
|
|
||||||
object IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER : IrDeclarationOriginImpl("IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER")
|
|
||||||
object IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER : IrDeclarationOriginImpl("IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER")
|
|
||||||
object IR_EXTERNAL_DECLARATION_STUB : IrDeclarationOriginImpl("IR_EXTERNAL_DECLARATION_STUB")
|
|
||||||
object IR_EXTERNAL_JAVA_DECLARATION_STUB : IrDeclarationOriginImpl("IR_EXTERNAL_JAVA_DECLARATION_STUB")
|
|
||||||
object IR_BUILTINS_STUB : IrDeclarationOriginImpl("IR_BUILTINS_STUB")
|
|
||||||
object BRIDGE : IrDeclarationOriginImpl("BRIDGE", isSynthetic = true)
|
|
||||||
object BRIDGE_SPECIAL : IrDeclarationOriginImpl("BRIDGE_SPECIAL")
|
|
||||||
object GENERATED_SETTER_GETTER : IrDeclarationOriginImpl("GENERATED_SETTER_GETTER", isSynthetic = true)
|
|
||||||
|
|
||||||
object FIELD_FOR_ENUM_ENTRY : IrDeclarationOriginImpl("FIELD_FOR_ENUM_ENTRY")
|
val SCRIPT_CLASS by IrDeclarationOriginImpl
|
||||||
object SYNTHETIC_HELPER_FOR_ENUM_VALUES : IrDeclarationOriginImpl("SYNTHETIC_HELPER_FOR_ENUM_VALUES", isSynthetic = true)
|
val SCRIPT_THIS_RECEIVER by IrDeclarationOriginImpl
|
||||||
object SYNTHETIC_HELPER_FOR_ENUM_ENTRIES : IrDeclarationOriginImpl("SYNTHETIC_HELPER_FOR_ENUM_ENTRIES", isSynthetic = true)
|
val SCRIPT_STATEMENT by IrDeclarationOriginImpl
|
||||||
object FIELD_FOR_ENUM_VALUES : IrDeclarationOriginImpl("FIELD_FOR_ENUM_VALUES", isSynthetic = true)
|
val SCRIPT_EARLIER_SCRIPTS by IrDeclarationOriginImpl
|
||||||
object FIELD_FOR_ENUM_ENTRIES: IrDeclarationOriginImpl("FIELD_FOR_ENUM_ENTRIES", isSynthetic = true)
|
val SCRIPT_CALL_PARAMETER by IrDeclarationOriginImpl
|
||||||
object PROPERTY_FOR_ENUM_ENTRIES: IrDeclarationOriginImpl("PROPERTY_FOR_ENUM_ENTRIES", isSynthetic = false)
|
val SCRIPT_IMPLICIT_RECEIVER by IrDeclarationOriginImpl
|
||||||
object FIELD_FOR_OBJECT_INSTANCE : IrDeclarationOriginImpl("FIELD_FOR_OBJECT_INSTANCE")
|
val SCRIPT_PROVIDED_PROPERTY by IrDeclarationOriginImpl
|
||||||
object FIELD_FOR_CLASS_CONTEXT_RECEIVER : IrDeclarationOriginImpl("FIELD_FOR_CLASS_CONTEXT_RECEIVER", isSynthetic = true)
|
val SCRIPT_RESULT_PROPERTY by IrDeclarationOriginImpl
|
||||||
|
val GENERATED_DATA_CLASS_MEMBER by IrDeclarationOriginImpl
|
||||||
|
val GENERATED_SINGLE_FIELD_VALUE_CLASS_MEMBER by IrDeclarationOriginImpl
|
||||||
|
val GENERATED_MULTI_FIELD_VALUE_CLASS_MEMBER by IrDeclarationOriginImpl
|
||||||
|
val LOCAL_FUNCTION by IrDeclarationOriginImpl
|
||||||
|
val LOCAL_FUNCTION_FOR_LAMBDA by IrDeclarationOriginImpl
|
||||||
|
val CATCH_PARAMETER by IrDeclarationOriginImpl
|
||||||
|
val UNDERSCORE_PARAMETER by IrDeclarationOriginImpl
|
||||||
|
val DESTRUCTURED_OBJECT_PARAMETER by IrDeclarationOriginImpl
|
||||||
|
val INSTANCE_RECEIVER by IrDeclarationOriginImpl
|
||||||
|
val PRIMARY_CONSTRUCTOR_PARAMETER by IrDeclarationOriginImpl
|
||||||
|
val IR_TEMPORARY_VARIABLE by IrDeclarationOriginImpl
|
||||||
|
val IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER by IrDeclarationOriginImpl
|
||||||
|
val IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER by IrDeclarationOriginImpl
|
||||||
|
val IR_EXTERNAL_DECLARATION_STUB by IrDeclarationOriginImpl
|
||||||
|
val IR_EXTERNAL_JAVA_DECLARATION_STUB by IrDeclarationOriginImpl
|
||||||
|
val IR_BUILTINS_STUB by IrDeclarationOriginImpl
|
||||||
|
val BRIDGE by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val BRIDGE_SPECIAL by IrDeclarationOriginImpl
|
||||||
|
val GENERATED_SETTER_GETTER by IrDeclarationOriginImpl.Synthetic
|
||||||
|
|
||||||
object ADAPTER_FOR_CALLABLE_REFERENCE : IrDeclarationOriginImpl("ADAPTER_FOR_CALLABLE_REFERENCE", isSynthetic = true)
|
val FIELD_FOR_ENUM_ENTRY by IrDeclarationOriginImpl
|
||||||
object ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE : IrDeclarationOriginImpl("ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE")
|
val SYNTHETIC_HELPER_FOR_ENUM_VALUES by IrDeclarationOriginImpl.Synthetic
|
||||||
object ADAPTER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_FOR_SUSPEND_CONVERSION", isSynthetic = true)
|
val SYNTHETIC_HELPER_FOR_ENUM_ENTRIES by IrDeclarationOriginImpl.Synthetic
|
||||||
object ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION")
|
val FIELD_FOR_ENUM_VALUES by IrDeclarationOriginImpl.Synthetic
|
||||||
object ADAPTER_FOR_FUN_INTERFACE_CONSTRUCTOR : IrDeclarationOriginImpl("ADAPTER_FOR_FUN_INTERFACE_CONSTRUCTOR", isSynthetic = true)
|
val FIELD_FOR_ENUM_ENTRIES by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val PROPERTY_FOR_ENUM_ENTRIES by IrDeclarationOriginImpl
|
||||||
|
val FIELD_FOR_OBJECT_INSTANCE by IrDeclarationOriginImpl
|
||||||
|
val FIELD_FOR_CLASS_CONTEXT_RECEIVER by IrDeclarationOriginImpl.Synthetic
|
||||||
|
|
||||||
object GENERATED_SAM_IMPLEMENTATION : IrDeclarationOriginImpl("GENERATED_SAM_IMPLEMENTATION")
|
val ADAPTER_FOR_CALLABLE_REFERENCE by IrDeclarationOriginImpl.Synthetic
|
||||||
object SYNTHETIC_GENERATED_SAM_IMPLEMENTATION : IrDeclarationOriginImpl("SYNTHETIC_GENERATED_SAM_IMPLEMENTATION", isSynthetic = true)
|
val ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE by IrDeclarationOriginImpl
|
||||||
|
val ADAPTER_FOR_SUSPEND_CONVERSION by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION by IrDeclarationOriginImpl
|
||||||
|
val ADAPTER_FOR_FUN_INTERFACE_CONSTRUCTOR by IrDeclarationOriginImpl.Synthetic
|
||||||
|
|
||||||
object SYNTHETIC_JAVA_PROPERTY_DELEGATE : IrDeclarationOriginImpl("SYNTHETIC_JAVA_PROPERTY_DELEGATE", isSynthetic = true)
|
val GENERATED_SAM_IMPLEMENTATION by IrDeclarationOriginImpl
|
||||||
|
val SYNTHETIC_GENERATED_SAM_IMPLEMENTATION by IrDeclarationOriginImpl.Synthetic
|
||||||
|
|
||||||
object FIELD_FOR_OUTER_THIS : IrDeclarationOriginImpl("FIELD_FOR_OUTER_THIS", isSynthetic = true)
|
val SYNTHETIC_JAVA_PROPERTY_DELEGATE by IrDeclarationOriginImpl.Synthetic
|
||||||
object CONTINUATION : IrDeclarationOriginImpl("CONTINUATION", isSynthetic = true)
|
|
||||||
object LOWERED_SUSPEND_FUNCTION : IrDeclarationOriginImpl("LOWERED_SUSPEND_FUNCTION", isSynthetic = true)
|
|
||||||
|
|
||||||
object SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT : IrDeclarationOriginImpl("SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT", isSynthetic = true)
|
val FIELD_FOR_OUTER_THIS by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val CONTINUATION by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val LOWERED_SUSPEND_FUNCTION by IrDeclarationOriginImpl.Synthetic
|
||||||
|
|
||||||
|
val SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT by IrDeclarationOriginImpl.Synthetic
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [pluginKey] may be null if declaration with this origin was deserialized from klib
|
* [pluginKey] may be null if declaration with this origin was deserialized from klib
|
||||||
@@ -103,9 +113,7 @@ interface IrDeclarationOrigin {
|
|||||||
override val name: String
|
override val name: String
|
||||||
get() = "GENERATED[${pluginId}]"
|
get() = "GENERATED[${pluginId}]"
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String = name
|
||||||
return name
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
@@ -113,20 +121,16 @@ interface IrDeclarationOrigin {
|
|||||||
return pluginKey == other.pluginKey
|
return pluginKey == other.pluginKey
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int = pluginKey.hashCode()
|
||||||
return pluginKey.hashCode()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val name: String
|
|
||||||
val isSynthetic: Boolean get() = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class IrDeclarationOriginImpl(
|
class IrDeclarationOriginImpl(
|
||||||
override val name: String,
|
override val name: String,
|
||||||
override val isSynthetic: Boolean = false
|
override val isSynthetic: Boolean = false
|
||||||
) : IrDeclarationOrigin {
|
) : IrDeclarationOrigin, ReadOnlyProperty<Any?, IrDeclarationOriginImpl> {
|
||||||
override fun toString(): String = name
|
override fun toString(): String = name
|
||||||
|
override fun getValue(thisRef: Any?, property: KProperty<*>): IrDeclarationOriginImpl = this
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
@@ -137,7 +141,15 @@ abstract class IrDeclarationOriginImpl(
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int = name.hashCode()
|
||||||
return name.hashCode()
|
|
||||||
|
companion object : PropertyDelegateProvider<Any?, ReadOnlyProperty<Any?, IrDeclarationOriginImpl>> {
|
||||||
|
override fun provideDelegate(thisRef: Any?, property: KProperty<*>): ReadOnlyProperty<Any?, IrDeclarationOriginImpl> =
|
||||||
|
IrDeclarationOriginImpl(property.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
object Synthetic : PropertyDelegateProvider<Any?, ReadOnlyProperty<Any?, IrDeclarationOriginImpl>> {
|
||||||
|
override fun provideDelegate(thisRef: Any?, property: KProperty<*>): ReadOnlyProperty<Any?, IrDeclarationOriginImpl> =
|
||||||
|
IrDeclarationOriginImpl(property.name, isSynthetic = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ import org.jetbrains.kotlin.ir.types.IrType
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.utils.SmartList
|
import org.jetbrains.kotlin.utils.SmartList
|
||||||
|
|
||||||
private val SCRIPT_ORIGIN = object : IrDeclarationOriginImpl("SCRIPT") {}
|
private val SCRIPT_ORIGIN = IrDeclarationOriginImpl("SCRIPT")
|
||||||
val SCRIPT_K2_ORIGIN = object : IrDeclarationOriginImpl("SCRIPT_K2") {}
|
val SCRIPT_K2_ORIGIN = IrDeclarationOriginImpl("SCRIPT_K2")
|
||||||
|
|
||||||
class IrScriptImpl(
|
class IrScriptImpl(
|
||||||
override val symbol: IrScriptSymbol,
|
override val symbol: IrScriptSymbol,
|
||||||
|
|||||||
@@ -5,96 +5,113 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.expressions
|
package org.jetbrains.kotlin.ir.expressions
|
||||||
|
|
||||||
abstract class IrStatementOriginImpl(val debugName: String) : IrStatementOrigin {
|
import kotlin.properties.PropertyDelegateProvider
|
||||||
|
import kotlin.properties.ReadOnlyProperty
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
class IrStatementOriginImpl(override val debugName: String) : IrStatementOrigin, ReadOnlyProperty<Any?, IrStatementOriginImpl> {
|
||||||
|
override fun getValue(thisRef: Any?, property: KProperty<*>): IrStatementOriginImpl = this
|
||||||
|
|
||||||
override fun toString(): String = debugName
|
override fun toString(): String = debugName
|
||||||
|
|
||||||
|
companion object : PropertyDelegateProvider<Any?, ReadOnlyProperty<Any?, IrStatementOriginImpl>> {
|
||||||
|
override fun provideDelegate(thisRef: Any?, property: KProperty<*>): ReadOnlyProperty<Any?, IrStatementOriginImpl> =
|
||||||
|
IrStatementOriginImpl(property.name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IrStatementOrigin {
|
interface IrStatementOrigin {
|
||||||
object SAFE_CALL : IrStatementOriginImpl("SAFE_CALL")
|
val debugName: String
|
||||||
|
|
||||||
object UMINUS : IrStatementOriginImpl("UMINUS")
|
companion object {
|
||||||
object UPLUS : IrStatementOriginImpl("UPLUS")
|
val SAFE_CALL by IrStatementOriginImpl
|
||||||
object EXCL : IrStatementOriginImpl("EXCL")
|
|
||||||
object EXCLEXCL : IrStatementOriginImpl("EXCLEXCL")
|
|
||||||
|
|
||||||
object ELVIS : IrStatementOriginImpl("ELVIS")
|
val UMINUS by IrStatementOriginImpl
|
||||||
|
val UPLUS by IrStatementOriginImpl
|
||||||
|
val EXCL by IrStatementOriginImpl
|
||||||
|
val EXCLEXCL by IrStatementOriginImpl
|
||||||
|
|
||||||
object LT : IrStatementOriginImpl("LT")
|
val ELVIS by IrStatementOriginImpl
|
||||||
object GT : IrStatementOriginImpl("GT")
|
|
||||||
object LTEQ : IrStatementOriginImpl("LTEQ")
|
|
||||||
object GTEQ : IrStatementOriginImpl("GTEQ")
|
|
||||||
|
|
||||||
object EQEQ : IrStatementOriginImpl("EQEQ")
|
val LT by IrStatementOriginImpl
|
||||||
object EQEQEQ : IrStatementOriginImpl("EQEQEQ")
|
val GT by IrStatementOriginImpl
|
||||||
object EXCLEQ : IrStatementOriginImpl("EXCLEQ")
|
val LTEQ by IrStatementOriginImpl
|
||||||
object EXCLEQEQ : IrStatementOriginImpl("EXCLEQEQ")
|
val GTEQ by IrStatementOriginImpl
|
||||||
|
|
||||||
object IN : IrStatementOriginImpl("IN")
|
val EQEQ by IrStatementOriginImpl
|
||||||
object NOT_IN : IrStatementOriginImpl("NOT_IN")
|
val EQEQEQ by IrStatementOriginImpl
|
||||||
object ANDAND : IrStatementOriginImpl("ANDAND")
|
val EXCLEQ by IrStatementOriginImpl
|
||||||
object OROR : IrStatementOriginImpl("OROR")
|
val EXCLEQEQ by IrStatementOriginImpl
|
||||||
|
|
||||||
object PLUS : IrStatementOriginImpl("PLUS")
|
val IN by IrStatementOriginImpl
|
||||||
object MINUS : IrStatementOriginImpl("MINUS")
|
val NOT_IN by IrStatementOriginImpl
|
||||||
object MUL : IrStatementOriginImpl("MUL")
|
val ANDAND by IrStatementOriginImpl
|
||||||
object DIV : IrStatementOriginImpl("DIV")
|
val OROR by IrStatementOriginImpl
|
||||||
object PERC : IrStatementOriginImpl("PERC")
|
|
||||||
object RANGE : IrStatementOriginImpl("RANGE")
|
|
||||||
object RANGE_UNTIL : IrStatementOriginImpl("RANGE_UNTIL")
|
|
||||||
|
|
||||||
object INVOKE : IrStatementOriginImpl("INVOKE")
|
val PLUS by IrStatementOriginImpl
|
||||||
object VARIABLE_AS_FUNCTION : IrStatementOriginImpl("VARIABLE_AS_FUNCTION")
|
val MINUS by IrStatementOriginImpl
|
||||||
object GET_ARRAY_ELEMENT : IrStatementOriginImpl("GET_ARRAY_ELEMENT")
|
val MUL by IrStatementOriginImpl
|
||||||
|
val DIV by IrStatementOriginImpl
|
||||||
|
val PERC by IrStatementOriginImpl
|
||||||
|
val RANGE by IrStatementOriginImpl
|
||||||
|
val RANGE_UNTIL by IrStatementOriginImpl
|
||||||
|
|
||||||
object PREFIX_INCR : IrStatementOriginImpl("PREFIX_INCR")
|
val INVOKE by IrStatementOriginImpl
|
||||||
object PREFIX_DECR : IrStatementOriginImpl("PREFIX_DECR")
|
val VARIABLE_AS_FUNCTION by IrStatementOriginImpl
|
||||||
object POSTFIX_INCR : IrStatementOriginImpl("POSTFIX_INCR")
|
val GET_ARRAY_ELEMENT by IrStatementOriginImpl
|
||||||
object POSTFIX_DECR : IrStatementOriginImpl("POSTFIX_DECR")
|
|
||||||
|
|
||||||
object EQ : IrStatementOriginImpl("EQ")
|
val PREFIX_INCR by IrStatementOriginImpl
|
||||||
object PLUSEQ : IrStatementOriginImpl("PLUSEQ")
|
val PREFIX_DECR by IrStatementOriginImpl
|
||||||
object MINUSEQ : IrStatementOriginImpl("MINUSEQ")
|
val POSTFIX_INCR by IrStatementOriginImpl
|
||||||
object MULTEQ : IrStatementOriginImpl("MULTEQ")
|
val POSTFIX_DECR by IrStatementOriginImpl
|
||||||
object DIVEQ : IrStatementOriginImpl("DIVEQ")
|
|
||||||
object PERCEQ : IrStatementOriginImpl("PERCEQ")
|
|
||||||
|
|
||||||
object ARGUMENTS_REORDERING_FOR_CALL : IrStatementOriginImpl("ARGUMENTS_REORDERING_FOR_CALL")
|
val EQ by IrStatementOriginImpl
|
||||||
object DESTRUCTURING_DECLARATION : IrStatementOriginImpl("DESTRUCTURING_DECLARATION")
|
val PLUSEQ by IrStatementOriginImpl
|
||||||
|
val MINUSEQ by IrStatementOriginImpl
|
||||||
|
val MULTEQ by IrStatementOriginImpl
|
||||||
|
val DIVEQ by IrStatementOriginImpl
|
||||||
|
val PERCEQ by IrStatementOriginImpl
|
||||||
|
|
||||||
object GET_PROPERTY : IrStatementOriginImpl("GET_PROPERTY")
|
val ARGUMENTS_REORDERING_FOR_CALL by IrStatementOriginImpl
|
||||||
object GET_LOCAL_PROPERTY : IrStatementOriginImpl("GET_LOCAL_PROPERTY")
|
val DESTRUCTURING_DECLARATION by IrStatementOriginImpl
|
||||||
|
|
||||||
object IF : IrStatementOriginImpl("IF")
|
val GET_PROPERTY by IrStatementOriginImpl
|
||||||
object WHEN : IrStatementOriginImpl("WHEN")
|
val GET_LOCAL_PROPERTY by IrStatementOriginImpl
|
||||||
object WHEN_COMMA : IrStatementOriginImpl("WHEN_COMMA")
|
|
||||||
object WHILE_LOOP : IrStatementOriginImpl("WHILE_LOOP")
|
|
||||||
object DO_WHILE_LOOP : IrStatementOriginImpl("DO_WHILE_LOOP")
|
|
||||||
object FOR_LOOP : IrStatementOriginImpl("FOR_LOOP")
|
|
||||||
object FOR_LOOP_ITERATOR : IrStatementOriginImpl("FOR_LOOP_ITERATOR")
|
|
||||||
object FOR_LOOP_INNER_WHILE : IrStatementOriginImpl("FOR_LOOP_INNER_WHILE")
|
|
||||||
object FOR_LOOP_HAS_NEXT : IrStatementOriginImpl("FOR_LOOP_HAS_NEXT")
|
|
||||||
object FOR_LOOP_NEXT : IrStatementOriginImpl("FOR_LOOP_NEXT")
|
|
||||||
|
|
||||||
object LAMBDA : IrStatementOriginImpl("LAMBDA")
|
val IF by IrStatementOriginImpl
|
||||||
object DEFAULT_VALUE : IrStatementOriginImpl("DEFAULT_VALUE")
|
val WHEN by IrStatementOriginImpl
|
||||||
object ANONYMOUS_FUNCTION : IrStatementOriginImpl("ANONYMOUS_FUNCTION")
|
val WHEN_COMMA by IrStatementOriginImpl
|
||||||
object OBJECT_LITERAL : IrStatementOriginImpl("OBJECT_LITERAL")
|
val WHILE_LOOP by IrStatementOriginImpl
|
||||||
object ADAPTED_FUNCTION_REFERENCE : IrStatementOriginImpl("ADAPTED_FUNCTION_REFERENCE")
|
val DO_WHILE_LOOP by IrStatementOriginImpl
|
||||||
object SUSPEND_CONVERSION : IrStatementOriginImpl("SUSPEND_CONVERSION")
|
val FOR_LOOP by IrStatementOriginImpl
|
||||||
object FUN_INTERFACE_CONSTRUCTOR_REFERENCE : IrStatementOriginImpl("FUN_INTERFACE_CONSTRUCTOR_REFERENCE")
|
val FOR_LOOP_ITERATOR by IrStatementOriginImpl
|
||||||
|
val FOR_LOOP_INNER_WHILE by IrStatementOriginImpl
|
||||||
|
val FOR_LOOP_HAS_NEXT by IrStatementOriginImpl
|
||||||
|
val FOR_LOOP_NEXT by IrStatementOriginImpl
|
||||||
|
|
||||||
object INITIALIZE_PROPERTY_FROM_PARAMETER : IrStatementOriginImpl("INITIALIZE_PROPERTY_FROM_PARAMETER")
|
val LAMBDA by IrStatementOriginImpl
|
||||||
object INITIALIZE_FIELD : IrStatementOriginImpl("INITIALIZE_FIELD")
|
val DEFAULT_VALUE by IrStatementOriginImpl
|
||||||
|
val ANONYMOUS_FUNCTION by IrStatementOriginImpl
|
||||||
|
val OBJECT_LITERAL by IrStatementOriginImpl
|
||||||
|
val ADAPTED_FUNCTION_REFERENCE by IrStatementOriginImpl
|
||||||
|
val SUSPEND_CONVERSION by IrStatementOriginImpl
|
||||||
|
val FUN_INTERFACE_CONSTRUCTOR_REFERENCE by IrStatementOriginImpl
|
||||||
|
|
||||||
object PROPERTY_REFERENCE_FOR_DELEGATE : IrStatementOriginImpl("PROPERTY_REFERENCE_FOR_DELEGATE")
|
val INITIALIZE_PROPERTY_FROM_PARAMETER by IrStatementOriginImpl
|
||||||
|
val INITIALIZE_FIELD by IrStatementOriginImpl
|
||||||
|
|
||||||
object BRIDGE_DELEGATION : IrStatementOriginImpl("BRIDGE_DELEGATION")
|
val PROPERTY_REFERENCE_FOR_DELEGATE by IrStatementOriginImpl
|
||||||
|
|
||||||
object SYNTHETIC_NOT_AUTOBOXED_CHECK : IrStatementOriginImpl("SYNTHETIC_NOT_AUTOBOXED_CHECK")
|
val BRIDGE_DELEGATION by IrStatementOriginImpl
|
||||||
|
|
||||||
object PARTIAL_LINKAGE_RUNTIME_ERROR : IrStatementOriginImpl("PARTIAL_LINKAGE_RUNTIME_ERROR")
|
val SYNTHETIC_NOT_AUTOBOXED_CHECK by IrStatementOriginImpl
|
||||||
|
|
||||||
|
val PARTIAL_LINKAGE_RUNTIME_ERROR by IrStatementOriginImpl
|
||||||
|
}
|
||||||
|
|
||||||
|
data class COMPONENT_N private constructor(val index: Int) : IrStatementOrigin {
|
||||||
|
override val debugName: String = "COMPONENT_$index"
|
||||||
|
|
||||||
data class COMPONENT_N private constructor(val index: Int) : IrStatementOriginImpl("COMPONENT_$index") {
|
|
||||||
companion object {
|
companion object {
|
||||||
private val precreatedComponents = Array(32) { i -> COMPONENT_N(i + 1) }
|
private val precreatedComponents = Array(32) { i -> COMPONENT_N(i + 1) }
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrCall
|
import org.jetbrains.kotlin.ir.expressions.IrCall
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrContainerExpression
|
import org.jetbrains.kotlin.ir.expressions.IrContainerExpression
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.PARTIAL_LINKAGE_RUNTIME_ERROR
|
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.Companion.PARTIAL_LINKAGE_RUNTIME_ERROR
|
||||||
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
||||||
import org.jetbrains.kotlin.ir.util.getPackageFragment
|
import org.jetbrains.kotlin.ir.util.getPackageFragment
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|||||||
+13
-6
@@ -5,19 +5,26 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.linkage.partial
|
package org.jetbrains.kotlin.ir.linkage.partial
|
||||||
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
|
||||||
|
|
||||||
@Suppress("KDocUnresolvedReference")
|
@Suppress("KDocUnresolvedReference")
|
||||||
enum class PartiallyLinkedDeclarationOrigin : IrDeclarationOrigin {
|
object PartiallyLinkedDeclarationOrigin {
|
||||||
/** The unresolved (missing) declaration */
|
/** The unresolved (missing) declaration */
|
||||||
MISSING_DECLARATION,
|
val MISSING_DECLARATION by IrDeclarationOriginImpl
|
||||||
|
|
||||||
/** The abstract callable member that needs to be implemented in non-abstract class */
|
/** The abstract callable member that needs to be implemented in non-abstract class */
|
||||||
UNIMPLEMENTED_ABSTRACT_CALLABLE_MEMBER,
|
val UNIMPLEMENTED_ABSTRACT_CALLABLE_MEMBER by IrDeclarationOriginImpl
|
||||||
|
|
||||||
/** The callable member is not implemented and inherit several implementations from interfaces, but no implementation from class */
|
/** The callable member is not implemented and inherit several implementations from interfaces, but no implementation from class */
|
||||||
AMBIGUOUS_NON_OVERRIDDEN_CALLABLE_MEMBER,
|
val AMBIGUOUS_NON_OVERRIDDEN_CALLABLE_MEMBER by IrDeclarationOriginImpl
|
||||||
|
|
||||||
/** Auxiliary declaration generated by [PartiallyLinkedIrTreePatcher] */
|
/** Auxiliary declaration generated by [PartiallyLinkedIrTreePatcher] */
|
||||||
AUXILIARY_GENERATED_DECLARATION;
|
val AUXILIARY_GENERATED_DECLARATION by IrDeclarationOriginImpl
|
||||||
|
|
||||||
|
val entries: Set<IrDeclarationOriginImpl> = setOf(
|
||||||
|
MISSING_DECLARATION,
|
||||||
|
UNIMPLEMENTED_ABSTRACT_CALLABLE_MEMBER,
|
||||||
|
AMBIGUOUS_NON_OVERRIDDEN_CALLABLE_MEMBER,
|
||||||
|
AUXILIARY_GENERATED_DECLARATION,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -100,7 +100,7 @@ internal class PartialLinkageSupportForLoweringsImpl(
|
|||||||
startOffset
|
startOffset
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> if (origin is PartiallyLinkedDeclarationOrigin) {
|
else -> if (origin in PartiallyLinkedDeclarationOrigin.entries) {
|
||||||
// There is no sense to take coordinates from the declaration that does not exist in the code.
|
// There is no sense to take coordinates from the declaration that does not exist in the code.
|
||||||
// Let's take the coordinates of the parent.
|
// Let's take the coordinates of the parent.
|
||||||
parent.startOffsetOfFirstDenotableIrElement()
|
parent.startOffsetOfFirstDenotableIrElement()
|
||||||
|
|||||||
+2
-2
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.ir.IrStatement
|
|||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyDeclarationBase
|
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyDeclarationBase
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.PARTIAL_LINKAGE_RUNTIME_ERROR
|
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.Companion.PARTIAL_LINKAGE_RUNTIME_ERROR
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrCompositeImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrCompositeImpl
|
||||||
import org.jetbrains.kotlin.ir.linkage.partial.*
|
import org.jetbrains.kotlin.ir.linkage.partial.*
|
||||||
import org.jetbrains.kotlin.ir.linkage.partial.PartialLinkageCase.*
|
import org.jetbrains.kotlin.ir.linkage.partial.PartialLinkageCase.*
|
||||||
@@ -457,7 +457,7 @@ internal class PartiallyLinkedIrTreePatcher(
|
|||||||
|
|
||||||
override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
|
override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
|
||||||
// Optimization: Don't patch expressions under generated synthetic declarations.
|
// Optimization: Don't patch expressions under generated synthetic declarations.
|
||||||
return if (declaration.origin is PartiallyLinkedDeclarationOrigin)
|
return if (declaration.origin in PartiallyLinkedDeclarationOrigin.entries)
|
||||||
declaration // There are neither expressions nor annotations to patch.
|
declaration // There are neither expressions nor annotations to patch.
|
||||||
else {
|
else {
|
||||||
declaration.filterUnusableAnnotations()
|
declaration.filterUnusableAnnotations()
|
||||||
|
|||||||
+6
-6
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.ir.types.*
|
|||||||
import org.jetbrains.kotlin.ir.types.impl.*
|
import org.jetbrains.kotlin.ir.types.impl.*
|
||||||
import org.jetbrains.kotlin.ir.util.parentAsClass
|
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||||
import org.jetbrains.kotlin.utils.memoryOptimizedMap
|
import org.jetbrains.kotlin.utils.memoryOptimizedMap
|
||||||
|
import kotlin.reflect.full.declaredMemberProperties
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrBlock as ProtoBlock
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrBlock as ProtoBlock
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrBlockBody as ProtoBlockBody
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrBlockBody as ProtoBlockBody
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrBranch as ProtoBranch
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrBranch as ProtoBranch
|
||||||
@@ -857,11 +858,10 @@ class IrBodyDeserializer(
|
|||||||
code: () -> Long
|
code: () -> Long
|
||||||
): S? = if (condition) deserializeTypedSymbol(code(), fallbackSymbolKind, remap = true) else null
|
): S? = if (condition) deserializeTypedSymbol(code(), fallbackSymbolKind, remap = true) else null
|
||||||
|
|
||||||
companion object {
|
private companion object {
|
||||||
|
private val statementOriginIndex = IrStatementOrigin.Companion::class
|
||||||
private val allKnownStatementOrigins = IrStatementOrigin::class.nestedClasses.toList()
|
.declaredMemberProperties
|
||||||
|
.mapNotNull { it.get(IrStatementOrigin.Companion) as? IrStatementOrigin }
|
||||||
private val statementOriginIndex =
|
.associateBy { it.debugName }
|
||||||
allKnownStatementOrigins.mapNotNull { it.objectInstance as? IrStatementOriginImpl }.associateBy { it.debugName }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-9
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
import org.jetbrains.kotlin.utils.*
|
import org.jetbrains.kotlin.utils.*
|
||||||
import kotlin.collections.set
|
import kotlin.collections.set
|
||||||
|
import kotlin.reflect.full.declaredMemberProperties
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrAnonymousInit as ProtoAnonymousInit
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrAnonymousInit as ProtoAnonymousInit
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrClass as ProtoClass
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrClass as ProtoClass
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrConstructor as ProtoConstructor
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrConstructor as ProtoConstructor
|
||||||
@@ -252,7 +253,7 @@ class IrDeclarationDeserializer(
|
|||||||
private inline fun <T> withDeserializedIrDeclarationBase(
|
private inline fun <T> withDeserializedIrDeclarationBase(
|
||||||
proto: ProtoDeclarationBase,
|
proto: ProtoDeclarationBase,
|
||||||
setParent: Boolean = true,
|
setParent: Boolean = true,
|
||||||
block: (IrSymbol, IdSignature, Int, Int, IrDeclarationOrigin, Long) -> T
|
block: (IrSymbol, IdSignature, Int, Int, IrDeclarationOrigin, Long) -> T,
|
||||||
): T where T : IrDeclaration, T : IrSymbolOwner {
|
): T where T : IrDeclaration, T : IrSymbolOwner {
|
||||||
val (s, uid) = symbolDeserializer.deserializeIrSymbolToDeclare(proto.symbol)
|
val (s, uid) = symbolDeserializer.deserializeIrSymbolToDeclare(proto.symbol)
|
||||||
val coordinates = BinaryCoordinates.decode(proto.coordinates)
|
val coordinates = BinaryCoordinates.decode(proto.coordinates)
|
||||||
@@ -556,7 +557,7 @@ class IrDeclarationDeserializer(
|
|||||||
proto: ProtoFunctionBase,
|
proto: ProtoFunctionBase,
|
||||||
setParent: Boolean = true,
|
setParent: Boolean = true,
|
||||||
fallbackSymbolKind: SymbolKind,
|
fallbackSymbolKind: SymbolKind,
|
||||||
block: (S, IdSignature, Int, Int, IrDeclarationOrigin, Long) -> T
|
block: (S, IdSignature, Int, Int, IrDeclarationOrigin, Long) -> T,
|
||||||
): T = withDeserializedIrDeclarationBase(proto.base, setParent) { symbol, idSig, startOffset, endOffset, origin, fcode ->
|
): T = withDeserializedIrDeclarationBase(proto.base, setParent) { symbol, idSig, startOffset, endOffset, origin, fcode ->
|
||||||
val functionSymbol: S = symbol.checkSymbolType(fallbackSymbolKind)
|
val functionSymbol: S = symbol.checkSymbolType(fallbackSymbolKind)
|
||||||
symbolTable.withScope(functionSymbol) {
|
symbolTable.withScope(functionSymbol) {
|
||||||
@@ -621,7 +622,8 @@ class IrDeclarationDeserializer(
|
|||||||
isFakeOverride = flags.isFakeOverride,
|
isFakeOverride = flags.isFakeOverride,
|
||||||
)
|
)
|
||||||
}.apply {
|
}.apply {
|
||||||
overriddenSymbols = proto.overriddenList.memoryOptimizedMap { deserializeIrSymbolAndRemap(it).checkSymbolType(FUNCTION_SYMBOL) }
|
overriddenSymbols =
|
||||||
|
proto.overriddenList.memoryOptimizedMap { deserializeIrSymbolAndRemap(it).checkSymbolType(FUNCTION_SYMBOL) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -726,7 +728,7 @@ class IrDeclarationDeserializer(
|
|||||||
|
|
||||||
private fun deserializeIrLocalDelegatedProperty(
|
private fun deserializeIrLocalDelegatedProperty(
|
||||||
proto: ProtoLocalDelegatedProperty,
|
proto: ProtoLocalDelegatedProperty,
|
||||||
setParent: Boolean = true
|
setParent: Boolean = true,
|
||||||
): IrLocalDelegatedProperty =
|
): IrLocalDelegatedProperty =
|
||||||
withDeserializedIrDeclarationBase(proto.base, setParent) { symbol, _, startOffset, endOffset, origin, fcode ->
|
withDeserializedIrDeclarationBase(proto.base, setParent) { symbol, _, startOffset, endOffset, origin, fcode ->
|
||||||
val flags = LocalVariableFlags.decode(fcode)
|
val flags = LocalVariableFlags.decode(fcode)
|
||||||
@@ -794,17 +796,20 @@ class IrDeclarationDeserializer(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
private companion object {
|
||||||
private val allKnownDeclarationOrigins = IrDeclarationOrigin::class.nestedClasses.toList()
|
private val declarationOriginIndex by lazy {
|
||||||
private val declarationOriginIndex =
|
IrDeclarationOrigin.Companion::class
|
||||||
allKnownDeclarationOrigins.mapNotNull { it.objectInstance as? IrDeclarationOriginImpl }.associateBy { it.name }
|
.declaredMemberProperties
|
||||||
|
.mapNotNull { it.get(IrDeclarationOrigin.Companion) as? IrDeclarationOriginImpl }
|
||||||
|
.associateBy { it.name }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deserializeIrDeclarationOrigin(protoName: Int): IrDeclarationOrigin {
|
private fun deserializeIrDeclarationOrigin(protoName: Int): IrDeclarationOrigin {
|
||||||
val originName = libraryFile.string(protoName)
|
val originName = libraryFile.string(protoName)
|
||||||
return IrDeclarationOrigin.GeneratedByPlugin.fromSerializedString(originName)
|
return IrDeclarationOrigin.GeneratedByPlugin.fromSerializedString(originName)
|
||||||
?: declarationOriginIndex[originName]
|
?: declarationOriginIndex[originName]
|
||||||
?: object : IrDeclarationOriginImpl(originName) {}
|
?: IrDeclarationOriginImpl(originName)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deserializeDeclaration(proto: ProtoDeclaration, setParent: Boolean = true): IrDeclaration {
|
fun deserializeDeclaration(proto: ProtoDeclaration, setParent: Boolean = true): IrDeclaration {
|
||||||
|
|||||||
+1
-1
@@ -92,7 +92,7 @@ class FileDeserializationState(
|
|||||||
linker.fakeOverrideBuilder,
|
linker.fakeOverrideBuilder,
|
||||||
compatibilityMode = moduleDeserializer.compatibilityMode,
|
compatibilityMode = moduleDeserializer.compatibilityMode,
|
||||||
linker.partialLinkageSupport.isEnabled,
|
linker.partialLinkageSupport.isEnabled,
|
||||||
internationService = linker.internationService
|
internationService = linker.internationService,
|
||||||
)
|
)
|
||||||
|
|
||||||
val fileDeserializer = IrFileDeserializer(file, fileReader, fileProto, symbolDeserializer, declarationDeserializer)
|
val fileDeserializer = IrFileDeserializer(file, fileReader, fileProto, symbolDeserializer, declarationDeserializer)
|
||||||
|
|||||||
+1
-1
@@ -183,7 +183,7 @@ open class IrFileSerializer(
|
|||||||
private fun serializeIrDeclarationOrigin(origin: IrDeclarationOrigin): Int = serializeString(origin.name)
|
private fun serializeIrDeclarationOrigin(origin: IrDeclarationOrigin): Int = serializeString(origin.name)
|
||||||
|
|
||||||
private fun serializeIrStatementOrigin(origin: IrStatementOrigin): Int =
|
private fun serializeIrStatementOrigin(origin: IrStatementOrigin): Int =
|
||||||
serializeString((origin as? IrStatementOriginImpl)?.debugName ?: error("Unable to serialize origin ${origin.javaClass.name}"))
|
serializeString(origin.debugName)
|
||||||
|
|
||||||
private fun serializeCoordinates(start: Int, end: Int): Long = if (skipPrivateApi) {
|
private fun serializeCoordinates(start: Int, end: Int): Long = if (skipPrivateApi) {
|
||||||
0L
|
0L
|
||||||
|
|||||||
+14
-12
@@ -8,16 +8,18 @@ package org.jetbrains.kotlin.ir.backend.js
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
|
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
|
||||||
|
|
||||||
interface JsStatementOrigins {
|
object JsStatementOrigins {
|
||||||
object BIND_CALL : IrStatementOriginImpl("BIND_CALL")
|
val BIND_CALL by IrStatementOriginImpl
|
||||||
object STATEMENT_ORIGIN_COROUTINE_IMPL : IrStatementOriginImpl("COROUTINE_IMPL")
|
val STATEMENT_ORIGIN_COROUTINE_IMPL = IrStatementOriginImpl("COROUTINE_IMPL")
|
||||||
object SYNTHESIZED_STATEMENT : IrStatementOriginImpl("SYNTHESIZED_STATEMENT")
|
val SYNTHESIZED_STATEMENT by IrStatementOriginImpl
|
||||||
object CALLABLE_REFERENCE_CREATE : IrStatementOriginImpl("CALLABLE_REFERENCE_CREATE")
|
val CALLABLE_REFERENCE_CREATE by IrStatementOriginImpl
|
||||||
object CALLABLE_REFERENCE_INVOKE : IrStatementOriginImpl("CALLABLE_REFERENCE_INVOKE")
|
val CALLABLE_REFERENCE_INVOKE by IrStatementOriginImpl
|
||||||
object EXPLICIT_INVOKE : IrStatementOriginImpl("EXPLICIT_INVOKE")
|
val EXPLICIT_INVOKE by IrStatementOriginImpl
|
||||||
object FACTORY_ORIGIN : IrDeclarationOriginImpl("FACTORY_ORIGIN")
|
|
||||||
object COROUTINE_ROOT_LOOP : IrStatementOriginImpl("COROUTINE_ROOT_LOOP")
|
val FACTORY_ORIGIN by IrDeclarationOriginImpl
|
||||||
object COROUTINE_SWITCH : IrStatementOriginImpl("COROUTINE_SWITCH")
|
|
||||||
object CLASS_REFERENCE : IrStatementOriginImpl("CLASS_REFERENCE")
|
val COROUTINE_ROOT_LOOP by IrStatementOriginImpl
|
||||||
object IMPLEMENTATION_DELEGATION_CALL : IrStatementOriginImpl("IMPLEMENTATION_DELEGATION_CALL")
|
val COROUTINE_SWITCH by IrStatementOriginImpl
|
||||||
|
val CLASS_REFERENCE by IrStatementOriginImpl
|
||||||
|
val IMPLEMENTATION_DELEGATION_CALL by IrStatementOriginImpl
|
||||||
}
|
}
|
||||||
+1
-1
@@ -44,7 +44,7 @@ private fun Context.getTypeConversionImpl(
|
|||||||
}.symbol
|
}.symbol
|
||||||
}
|
}
|
||||||
|
|
||||||
internal object DECLARATION_ORIGIN_INLINE_CLASS_SPECIAL_FUNCTION : IrDeclarationOriginImpl("INLINE_CLASS_SPECIAL_FUNCTION")
|
internal val DECLARATION_ORIGIN_INLINE_CLASS_SPECIAL_FUNCTION = IrDeclarationOriginImpl("INLINE_CLASS_SPECIAL_FUNCTION")
|
||||||
|
|
||||||
private fun IrClass.defaultOrNullableType(hasQuestionMark: Boolean) =
|
private fun IrClass.defaultOrNullableType(hasQuestionMark: Boolean) =
|
||||||
if (hasQuestionMark) this.defaultType.makeNullable() else this.defaultType
|
if (hasQuestionMark) this.defaultType.makeNullable() else this.defaultType
|
||||||
|
|||||||
+1
-1
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
|||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||||
|
|
||||||
internal object DECLARATION_ORIGIN_FUNCTION_CLASS : IrDeclarationOriginImpl("DECLARATION_ORIGIN_FUNCTION_CLASS")
|
internal val DECLARATION_ORIGIN_FUNCTION_CLASS by IrDeclarationOriginImpl
|
||||||
|
|
||||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||||
val IrPackageFragment.isFunctionInterfaceFile get() = packageFragmentDescriptor is FunctionInterfacePackageFragment
|
val IrPackageFragment.isFunctionInterfaceFile get() = packageFragmentDescriptor is FunctionInterfacePackageFragment
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.ir.types.typeWith
|
|||||||
import org.jetbrains.kotlin.ir.util.SYNTHETIC_OFFSET
|
import org.jetbrains.kotlin.ir.util.SYNTHETIC_OFFSET
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
internal object DECLARATION_ORIGIN_ENTRY_POINT : IrDeclarationOriginImpl("ENTRY_POINT")
|
internal val DECLARATION_ORIGIN_ENTRY_POINT = IrDeclarationOriginImpl("ENTRY_POINT")
|
||||||
|
|
||||||
internal fun makeEntryPoint(generationState: NativeGenerationState): IrFunction {
|
internal fun makeEntryPoint(generationState: NativeGenerationState): IrFunction {
|
||||||
val context = generationState.context
|
val context = generationState.context
|
||||||
|
|||||||
+3
-1
@@ -1100,7 +1100,9 @@ private class ObjCBlockPointerValuePassing(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private object OBJC_BLOCK_FUNCTION_IMPL : IrDeclarationOriginImpl("OBJC_BLOCK_FUNCTION_IMPL")
|
private companion object {
|
||||||
|
private val OBJC_BLOCK_FUNCTION_IMPL by IrDeclarationOriginImpl
|
||||||
|
}
|
||||||
|
|
||||||
private fun IrBuilderWithScope.createKotlinFunctionObject(blockPointer: IrExpression): IrExpression {
|
private fun IrBuilderWithScope.createKotlinFunctionObject(blockPointer: IrExpression): IrExpression {
|
||||||
val constructor = generateKotlinFunctionClass()
|
val constructor = generateKotlinFunctionClass()
|
||||||
|
|||||||
+4
-4
@@ -151,7 +151,7 @@ internal class KotlinCBridgeBuilder(
|
|||||||
isKotlinToC: Boolean,
|
isKotlinToC: Boolean,
|
||||||
foreignExceptionMode: ForeignExceptionMode.Mode = ForeignExceptionMode.default
|
foreignExceptionMode: ForeignExceptionMode.Mode = ForeignExceptionMode.default
|
||||||
) {
|
) {
|
||||||
private val origin: CBridgeOrigin = if (isKotlinToC) CBridgeOrigin.KOTLIN_TO_C_BRIDGE else CBridgeOrigin.C_TO_KOTLIN_BRIDGE
|
private val origin = if (isKotlinToC) CBridgeOrigin.KOTLIN_TO_C_BRIDGE else CBridgeOrigin.C_TO_KOTLIN_BRIDGE
|
||||||
|
|
||||||
private val kotlinBridgeBuilder = KotlinBridgeBuilder(startOffset, endOffset, cName, stubs, isExternal = isKotlinToC, foreignExceptionMode, origin)
|
private val kotlinBridgeBuilder = KotlinBridgeBuilder(startOffset, endOffset, cName, stubs, isExternal = isKotlinToC, foreignExceptionMode, origin)
|
||||||
private val cBridgeBuilder = CFunctionBuilder()
|
private val cBridgeBuilder = CFunctionBuilder()
|
||||||
@@ -261,7 +261,7 @@ internal class CCallBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class CBridgeOrigin(name: String): IrDeclarationOriginImpl(name, isSynthetic = true) {
|
object CBridgeOrigin {
|
||||||
object KOTLIN_TO_C_BRIDGE: CBridgeOrigin("KOTLIN_TO_C_BRIDGE")
|
val KOTLIN_TO_C_BRIDGE by IrDeclarationOriginImpl.Synthetic
|
||||||
object C_TO_KOTLIN_BRIDGE: CBridgeOrigin("C_TO_KOTLIN_BRIDGE")
|
val C_TO_KOTLIN_BRIDGE by IrDeclarationOriginImpl.Synthetic
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
/**
|
/**
|
||||||
* Allows to distinguish external declarations to internal ABI.
|
* Allows to distinguish external declarations to internal ABI.
|
||||||
*/
|
*/
|
||||||
internal object INTERNAL_ABI_ORIGIN : IrDeclarationOriginImpl("INTERNAL_ABI")
|
internal val INTERNAL_ABI_ORIGIN = IrDeclarationOriginImpl("INTERNAL_ABI")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sometimes we need to reference symbols that are not declared in metadata.
|
* Sometimes we need to reference symbols that are not declared in metadata.
|
||||||
|
|||||||
+3
-1
@@ -288,5 +288,7 @@ internal class PropertyDelegationLowering(val generationState: NativeGenerationS
|
|||||||
return type.classifier == expectedClass
|
return type.classifier == expectedClass
|
||||||
}
|
}
|
||||||
|
|
||||||
private object DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION : IrDeclarationOriginImpl("KPROPERTIES_FOR_DELEGATION")
|
private companion object {
|
||||||
|
private val DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION = IrDeclarationOriginImpl("KPROPERTIES_FOR_DELEGATION")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
|||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.ARGUMENTS_REORDERING_FOR_CALL
|
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.Companion.ARGUMENTS_REORDERING_FOR_CALL
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.classifierOrNull
|
import org.jetbrains.kotlin.ir.types.classifierOrNull
|
||||||
import org.jetbrains.kotlin.ir.types.typeWith
|
import org.jetbrains.kotlin.ir.types.typeWith
|
||||||
@@ -85,7 +85,7 @@ internal class EnumsSupport(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal object DECLARATION_ORIGIN_ENUM : IrDeclarationOriginImpl("ENUM")
|
internal val DECLARATION_ORIGIN_ENUM = IrDeclarationOriginImpl("ENUM")
|
||||||
|
|
||||||
internal class NativeEnumWhenLowering constructor(context: Context) : EnumWhenLowering(context) {
|
internal class NativeEnumWhenLowering constructor(context: Context) : EnumWhenLowering(context) {
|
||||||
override fun mapConstEnumEntry(entry: IrEnumEntry): Int {
|
override fun mapConstEnumEntry(entry: IrEnumEntry): Int {
|
||||||
|
|||||||
+2
-2
@@ -61,9 +61,9 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
internal class FunctionReferenceLowering(val generationState: NativeGenerationState) : FileLoweringPass {
|
internal class FunctionReferenceLowering(val generationState: NativeGenerationState) : FileLoweringPass {
|
||||||
private object DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
private val DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL = IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
|
||||||
|
|
||||||
fun isLoweredFunctionReference(declaration: IrDeclaration): Boolean =
|
fun isLoweredFunctionReference(declaration: IrDeclaration): Boolean =
|
||||||
declaration.origin == DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL
|
declaration.origin == DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -26,10 +26,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
|||||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||||
|
|
||||||
internal class InitializersLowering(val context: CommonBackendContext) : ClassLoweringPass {
|
internal class InitializersLowering(val context: CommonBackendContext) : ClassLoweringPass {
|
||||||
|
companion object {
|
||||||
object STATEMENT_ORIGIN_ANONYMOUS_INITIALIZER : IrStatementOriginImpl("ANONYMOUS_INITIALIZER")
|
val STATEMENT_ORIGIN_ANONYMOUS_INITIALIZER = IrStatementOriginImpl("ANONYMOUS_INITIALIZER")
|
||||||
|
val DECLARATION_ORIGIN_ANONYMOUS_INITIALIZER = IrDeclarationOriginImpl("ANONYMOUS_INITIALIZER")
|
||||||
object DECLARATION_ORIGIN_ANONYMOUS_INITIALIZER : IrDeclarationOriginImpl("ANONYMOUS_INITIALIZER")
|
}
|
||||||
|
|
||||||
override fun lower(irClass: IrClass) {
|
override fun lower(irClass: IrClass) {
|
||||||
if (irClass.isInterface) return
|
if (irClass.isInterface) return
|
||||||
|
|||||||
+3
-2
@@ -312,8 +312,9 @@ private class InteropLoweringPart1(val generationState: NativeGenerationState) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private object OVERRIDING_INITIALIZER_BY_CONSTRUCTOR :
|
private companion object {
|
||||||
IrDeclarationOriginImpl("OVERRIDING_INITIALIZER_BY_CONSTRUCTOR")
|
private val OVERRIDING_INITIALIZER_BY_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||||
|
}
|
||||||
|
|
||||||
private fun IrConstructor.overridesConstructor(other: IrConstructor): Boolean {
|
private fun IrConstructor.overridesConstructor(other: IrConstructor): Boolean {
|
||||||
return this.descriptor.valueParameters.size == other.descriptor.valueParameters.size &&
|
return this.descriptor.valueParameters.size == other.descriptor.valueParameters.size &&
|
||||||
|
|||||||
+4
-3
@@ -171,7 +171,8 @@ internal class ObjectClassLowering(val generationState: NativeGenerationState) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// This is a hack to avoid early freezing. Should be removed when freezing is removed
|
companion object {
|
||||||
object IrStatementOriginFieldPreInit : IrStatementOriginImpl("FIELD_PRE_INIT")
|
// This is a hack to avoid early freezing. Should be removed when freezing is removed
|
||||||
|
val IrStatementOriginFieldPreInit = IrStatementOriginImpl("FIELD_PRE_INIT")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -25,9 +25,9 @@ import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
|||||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
internal object DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER : IrDeclarationOriginImpl("STATIC_GLOBAL_INITIALIZER")
|
internal val DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_GLOBAL_INITIALIZER")
|
||||||
internal object DECLARATION_ORIGIN_STATIC_THREAD_LOCAL_INITIALIZER : IrDeclarationOriginImpl("STATIC_THREAD_LOCAL_INITIALIZER")
|
internal val DECLARATION_ORIGIN_STATIC_THREAD_LOCAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_THREAD_LOCAL_INITIALIZER")
|
||||||
internal object DECLARATION_ORIGIN_STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER : IrDeclarationOriginImpl("STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER")
|
internal val DECLARATION_ORIGIN_STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER")
|
||||||
|
|
||||||
internal val IrFunction.isStaticInitializer: Boolean
|
internal val IrFunction.isStaticInitializer: Boolean
|
||||||
get() = origin == DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER
|
get() = origin == DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER
|
||||||
|
|||||||
+3
-4
@@ -45,11 +45,10 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
|
|
||||||
internal class TestProcessor (val context: Context) {
|
internal class TestProcessor (val context: Context) {
|
||||||
|
|
||||||
object TEST_SUITE_CLASS: IrDeclarationOriginImpl("TEST_SUITE_CLASS")
|
|
||||||
object TEST_SUITE_GENERATED_MEMBER: IrDeclarationOriginImpl("TEST_SUITE_GENERATED_MEMBER")
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
val TEST_SUITE_CLASS by IrDeclarationOriginImpl
|
||||||
|
val TEST_SUITE_GENERATED_MEMBER by IrDeclarationOriginImpl
|
||||||
|
|
||||||
val COMPANION_GETTER_NAME = Name.identifier("getCompanion")
|
val COMPANION_GETTER_NAME = Name.identifier("getCompanion")
|
||||||
val INSTANCE_GETTER_NAME = Name.identifier("createInstance")
|
val INSTANCE_GETTER_NAME = Name.identifier("createInstance")
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.*
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.*
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
|
|
||||||
object IR_DECLARATION_ORIGIN_VOLATILE : IrDeclarationOriginImpl("VOLATILE")
|
val IR_DECLARATION_ORIGIN_VOLATILE = IrDeclarationOriginImpl("VOLATILE")
|
||||||
|
|
||||||
internal class VolatileFieldsLowering(val context: Context) : FileLoweringPass {
|
internal class VolatileFieldsLowering(val context: Context) : FileLoweringPass {
|
||||||
private val symbols = context.ir.symbols
|
private val symbols = context.ir.symbols
|
||||||
|
|||||||
+2
-2
@@ -33,8 +33,8 @@ internal class ExternalModulesDFG(val allTypes: List<DataFlowIR.Type.Declared>,
|
|||||||
val publicFunctions: Map<Long, DataFlowIR.FunctionSymbol.Public>,
|
val publicFunctions: Map<Long, DataFlowIR.FunctionSymbol.Public>,
|
||||||
val functionDFGs: Map<DataFlowIR.FunctionSymbol, DataFlowIR.Function>)
|
val functionDFGs: Map<DataFlowIR.FunctionSymbol, DataFlowIR.Function>)
|
||||||
|
|
||||||
internal object STATEMENT_ORIGIN_PRODUCER_INVOCATION : IrStatementOriginImpl("PRODUCER_INVOCATION")
|
internal val STATEMENT_ORIGIN_PRODUCER_INVOCATION = IrStatementOriginImpl("PRODUCER_INVOCATION")
|
||||||
internal object STATEMENT_ORIGIN_JOB_INVOCATION : IrStatementOriginImpl("JOB_INVOCATION")
|
internal val STATEMENT_ORIGIN_JOB_INVOCATION = IrStatementOriginImpl("JOB_INVOCATION")
|
||||||
|
|
||||||
private fun IrTypeOperator.isCast() =
|
private fun IrTypeOperator.isCast() =
|
||||||
this == IrTypeOperator.CAST || this == IrTypeOperator.IMPLICIT_CAST || this == IrTypeOperator.SAFE_CAST
|
this == IrTypeOperator.CAST || this == IrTypeOperator.IMPLICIT_CAST || this == IrTypeOperator.SAFE_CAST
|
||||||
|
|||||||
+1
-1
@@ -36,7 +36,7 @@ internal class KonanForwardDeclarationModuleDeserializer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val FORWARD_DECLARATION_ORIGIN = object : IrDeclarationOriginImpl("FORWARD_DECLARATION_ORIGIN") {}
|
private val FORWARD_DECLARATION_ORIGIN by IrDeclarationOriginImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
private val declaredDeclaration = mutableMapOf<IdSignature, IrClass>()
|
private val declaredDeclaration = mutableMapOf<IdSignature, IrClass>()
|
||||||
|
|||||||
+7
-5
@@ -113,11 +113,13 @@ abstract class AbstractAtomicSymbols(
|
|||||||
annotations = emptyList()
|
annotations = emptyList()
|
||||||
)
|
)
|
||||||
|
|
||||||
object ATOMICFU_GENERATED_CLASS : IrDeclarationOriginImpl("ATOMICFU_GENERATED_CLASS", isSynthetic = true)
|
companion object {
|
||||||
object ATOMICFU_GENERATED_FUNCTION : IrDeclarationOriginImpl("ATOMICFU_GENERATED_FUNCTION", isSynthetic = true)
|
val ATOMICFU_GENERATED_CLASS by IrDeclarationOriginImpl.Synthetic
|
||||||
object ATOMICFU_GENERATED_FIELD : IrDeclarationOriginImpl("ATOMICFU_GENERATED_FIELD", isSynthetic = true)
|
val ATOMICFU_GENERATED_FUNCTION by IrDeclarationOriginImpl.Synthetic
|
||||||
object ATOMICFU_GENERATED_PROPERTY : IrDeclarationOriginImpl("ATOMICFU_GENERATED_PROPERTY", isSynthetic = true)
|
val ATOMICFU_GENERATED_FIELD by IrDeclarationOriginImpl.Synthetic
|
||||||
object ATOMICFU_GENERATED_PROPERTY_ACCESSOR : IrDeclarationOriginImpl("ATOMICFU_GENERATED_PROPERTY_ACCESSOR", isSynthetic = true)
|
val ATOMICFU_GENERATED_PROPERTY by IrDeclarationOriginImpl.Synthetic
|
||||||
|
val ATOMICFU_GENERATED_PROPERTY_ACCESSOR by IrDeclarationOriginImpl.Synthetic
|
||||||
|
}
|
||||||
|
|
||||||
protected fun createPackage(packageName: String): IrPackageFragment =
|
protected fun createPackage(packageName: String): IrPackageFragment =
|
||||||
IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(
|
IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames.UN
|
|||||||
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializationPackages
|
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializationPackages
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.resolve.bitMaskSlotCount
|
import org.jetbrains.kotlinx.serialization.compiler.resolve.bitMaskSlotCount
|
||||||
|
|
||||||
object SERIALIZATION_PLUGIN_ORIGIN : IrDeclarationOriginImpl("KOTLINX_SERIALIZATION", true)
|
val SERIALIZATION_PLUGIN_ORIGIN = IrDeclarationOriginImpl("KOTLINX_SERIALIZATION", true)
|
||||||
|
|
||||||
internal typealias FunctionWithArgs = Pair<IrFunctionSymbol, List<IrExpression>>
|
internal typealias FunctionWithArgs = Pair<IrFunctionSymbol, List<IrExpression>>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user