[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) {
|
||||
is IrStatementOrigin.EQEQ -> IrDynamicOperator.EQEQ
|
||||
is IrStatementOrigin.EXCLEQ -> IrDynamicOperator.EXCLEQ
|
||||
is IrStatementOrigin.EQEQEQ -> IrDynamicOperator.EQEQEQ
|
||||
is IrStatementOrigin.EXCLEQEQ -> IrDynamicOperator.EXCLEQEQ
|
||||
IrStatementOrigin.EQEQ -> IrDynamicOperator.EQEQ
|
||||
IrStatementOrigin.EXCLEQ -> IrDynamicOperator.EXCLEQ
|
||||
IrStatementOrigin.EQEQEQ -> IrDynamicOperator.EQEQEQ
|
||||
IrStatementOrigin.EXCLEQEQ -> IrDynamicOperator.EXCLEQEQ
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -22,9 +22,10 @@ import org.jetbrains.kotlin.ir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val context: C) : FileLoweringPass {
|
||||
|
||||
protected object STATEMENT_ORIGIN_COROUTINE_IMPL : IrStatementOriginImpl("COROUTINE_IMPL")
|
||||
protected object DECLARATION_ORIGIN_COROUTINE_IMPL : IrDeclarationOriginImpl("COROUTINE_IMPL")
|
||||
protected companion object {
|
||||
val STATEMENT_ORIGIN_COROUTINE_IMPL = IrStatementOriginImpl("COROUTINE_IMPL")
|
||||
val DECLARATION_ORIGIN_COROUTINE_IMPL = IrDeclarationOriginImpl("COROUTINE_IMPL")
|
||||
}
|
||||
|
||||
protected abstract val stateMachineMethodName: Name
|
||||
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.utils.filterIsInstanceAnd
|
||||
|
||||
val ANNOTATION_IMPLEMENTATION = object : IrDeclarationOriginImpl("ANNOTATION_IMPLEMENTATION", isSynthetic = true) {}
|
||||
val ANNOTATION_IMPLEMENTATION by IrDeclarationOriginImpl.Synthetic
|
||||
|
||||
class AnnotationImplementationLowering(
|
||||
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 {
|
||||
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.name.Name
|
||||
|
||||
object FINALLY_EXPRESSION : IrStatementOriginImpl("FINALLY_EXPRESSION")
|
||||
val FINALLY_EXPRESSION by IrStatementOriginImpl
|
||||
|
||||
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>
|
||||
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
|
||||
@@ -86,11 +86,13 @@ class LocalDeclarationsLowering(
|
||||
runOnFilePostfix(irFile)
|
||||
}
|
||||
|
||||
object DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE :
|
||||
IrDeclarationOriginImpl("FIELD_FOR_CAPTURED_VALUE", isSynthetic = true)
|
||||
companion object {
|
||||
val DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE =
|
||||
IrDeclarationOriginImpl("FIELD_FOR_CAPTURED_VALUE", isSynthetic = true)
|
||||
|
||||
object DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE :
|
||||
IrDeclarationOriginImpl("FIELD_FOR_CROSSINLINE_CAPTURED_VALUE", isSynthetic = true)
|
||||
val DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE =
|
||||
IrDeclarationOriginImpl("FIELD_FOR_CROSSINLINE_CAPTURED_VALUE", isSynthetic = true)
|
||||
}
|
||||
|
||||
override fun lower(irBody: IrBody, container: IrDeclaration) {
|
||||
LocalDeclarationsTransformer(irBody, container).lowerLocalDeclarations()
|
||||
|
||||
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.backend.common.lower
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
|
||||
|
||||
interface LoweredStatementOrigins {
|
||||
object STATEMENT_ORIGIN_INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE : IrStatementOriginImpl("INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE")
|
||||
object SYNTHESIZED_INIT_BLOCK : IrStatementOriginImpl("SYNTHESIZED_INIT_BLOCK")
|
||||
object DEFAULT_DISPATCH_CALL : IrStatementOriginImpl("DEFAULT_DISPATCH_CALL")
|
||||
}
|
||||
object LoweredStatementOrigins {
|
||||
val STATEMENT_ORIGIN_INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE = IrStatementOriginImpl("INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE")
|
||||
val SYNTHESIZED_INIT_BLOCK by IrStatementOriginImpl
|
||||
val DEFAULT_DISPATCH_CALL by IrStatementOriginImpl
|
||||
}
|
||||
|
||||
+3
-3
@@ -917,6 +917,6 @@ class FunctionInlining(
|
||||
}
|
||||
}
|
||||
|
||||
object INLINED_FUNCTION_REFERENCE : IrStatementOriginImpl("INLINED_FUNCTION_REFERENCE")
|
||||
object INLINED_FUNCTION_ARGUMENTS : IrStatementOriginImpl("INLINED_FUNCTION_ARGUMENTS")
|
||||
object INLINED_FUNCTION_DEFAULT_ARGUMENTS : IrStatementOriginImpl("INLINED_FUNCTION_DEFAULT_ARGUMENTS")
|
||||
val INLINED_FUNCTION_REFERENCE by IrStatementOriginImpl
|
||||
val INLINED_FUNCTION_ARGUMENTS by IrStatementOriginImpl
|
||||
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
|
||||
|
||||
object JsLoweredDeclarationOrigin {
|
||||
object JS_INTRINSICS_STUB : IrDeclarationOriginImpl("JS_INTRINSICS_STUB")
|
||||
object JS_CLOSURE_BOX_CLASS_DECLARATION : IrDeclarationOriginImpl("JS_CLOSURE_BOX_CLASS_DECLARATION")
|
||||
object BRIDGE_WITH_STABLE_NAME : IrDeclarationOriginImpl("BRIDGE_WITH_STABLE_NAME")
|
||||
object BRIDGE_WITHOUT_STABLE_NAME : IrDeclarationOriginImpl("BRIDGE_WITHOUT_STABLE_NAME")
|
||||
object BRIDGE_PROPERTY_ACCESSOR : IrDeclarationOriginImpl("BRIDGE_PROPERTY_ACCESSOR")
|
||||
object OBJECT_GET_INSTANCE_FUNCTION : IrDeclarationOriginImpl("OBJECT_GET_INSTANCE_FUNCTION")
|
||||
object JS_SHADOWED_EXPORT : IrDeclarationOriginImpl("JS_SHADOWED_EXPORT")
|
||||
object JS_SUPER_CONTEXT_PARAMETER : IrDeclarationOriginImpl("JS_SUPER_CONTEXT_PARAMETER")
|
||||
object JS_SHADOWED_DEFAULT_PARAMETER : IrDeclarationOriginImpl("JS_SHADOWED_DEFAULT_PARAMETER")
|
||||
object ENUM_GET_INSTANCE_FUNCTION : IrDeclarationOriginImpl("ENUM_GET_INSTANCE_FUNCTION")
|
||||
val JS_INTRINSICS_STUB by IrDeclarationOriginImpl
|
||||
val JS_CLOSURE_BOX_CLASS_DECLARATION by IrDeclarationOriginImpl
|
||||
val BRIDGE_WITH_STABLE_NAME by IrDeclarationOriginImpl
|
||||
val BRIDGE_WITHOUT_STABLE_NAME by IrDeclarationOriginImpl
|
||||
val BRIDGE_PROPERTY_ACCESSOR by IrDeclarationOriginImpl
|
||||
val OBJECT_GET_INSTANCE_FUNCTION by IrDeclarationOriginImpl
|
||||
val JS_SHADOWED_EXPORT by IrDeclarationOriginImpl
|
||||
val JS_SUPER_CONTEXT_PARAMETER by IrDeclarationOriginImpl
|
||||
val JS_SHADOWED_DEFAULT_PARAMETER by IrDeclarationOriginImpl
|
||||
val ENUM_GET_INSTANCE_FUNCTION by IrDeclarationOriginImpl
|
||||
|
||||
fun isBridgeDeclarationOrigin(origin: IrDeclarationOrigin) = when (origin) {
|
||||
is BRIDGE_WITH_STABLE_NAME -> true
|
||||
is BRIDGE_WITHOUT_STABLE_NAME -> true
|
||||
is BRIDGE_PROPERTY_ACCESSOR -> true
|
||||
BRIDGE_WITH_STABLE_NAME -> true
|
||||
BRIDGE_WITHOUT_STABLE_NAME -> true
|
||||
BRIDGE_PROPERTY_ACCESSOR -> true
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
object JsIrBuilder {
|
||||
object SYNTHESIZED_DECLARATION : IrDeclarationOriginImpl("SYNTHESIZED_DECLARATION")
|
||||
val SYNTHESIZED_DECLARATION by IrDeclarationOriginImpl
|
||||
|
||||
fun buildCall(
|
||||
target: IrSimpleFunctionSymbol,
|
||||
|
||||
+3
-3
@@ -469,9 +469,9 @@ class CallableReferenceLowering(private val context: CommonBackendContext) : Bod
|
||||
}
|
||||
|
||||
companion object {
|
||||
object LAMBDA_IMPL : IrDeclarationOriginImpl("LAMBDA_IMPL")
|
||||
object FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
|
||||
object GENERATED_MEMBER_IN_CALLABLE_REFERENCE : IrDeclarationOriginImpl("GENERATED_MEMBER_IN_CALLABLE_REFERENCE")
|
||||
val LAMBDA_IMPL by IrDeclarationOriginImpl
|
||||
val FUNCTION_REFERENCE_IMPL by IrDeclarationOriginImpl
|
||||
val GENERATED_MEMBER_IN_CALLABLE_REFERENCE by IrDeclarationOriginImpl
|
||||
|
||||
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.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
|
||||
*/
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.util.transformFlat
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
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 {
|
||||
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.utils.memoryOptimizedPlus
|
||||
|
||||
object ES6_BOX_PARAMETER : IrDeclarationOriginImpl("ES6_BOX_PARAMETER")
|
||||
object ES6_BOX_PARAMETER_DEFAULT_RESOLUTION : IrStatementOriginImpl("ES6_BOX_PARAMETER_DEFAULT_RESOLUTION")
|
||||
val ES6_BOX_PARAMETER by IrDeclarationOriginImpl
|
||||
val ES6_BOX_PARAMETER_DEFAULT_RESOLUTION by IrStatementOriginImpl
|
||||
|
||||
val IrValueParameter.isBoxParameter: Boolean
|
||||
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.newHashMapWithExpectedSize
|
||||
|
||||
object ES6_INIT_CALL : IrStatementOriginImpl("ES6_INIT_CALL")
|
||||
object ES6_CONSTRUCTOR_REPLACEMENT : IrDeclarationOriginImpl("ES6_CONSTRUCTOR_REPLACEMENT")
|
||||
object ES6_SYNTHETIC_EXPORT_CONSTRUCTOR: IrDeclarationOriginImpl("ES6_SYNTHETIC_EXPORT_CONSTRUCTOR")
|
||||
object ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT : IrDeclarationOriginImpl("ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT")
|
||||
object ES6_INIT_FUNCTION : IrDeclarationOriginImpl("ES6_INIT_FUNCTION")
|
||||
object ES6_DELEGATING_CONSTRUCTOR_REPLACEMENT : IrStatementOriginImpl("ES6_DELEGATING_CONSTRUCTOR_REPLACEMENT")
|
||||
object ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT : IrDeclarationOriginImpl("ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT")
|
||||
val ES6_INIT_CALL by IrStatementOriginImpl
|
||||
val ES6_CONSTRUCTOR_REPLACEMENT by IrDeclarationOriginImpl
|
||||
val ES6_SYNTHETIC_EXPORT_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||
val ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT by IrDeclarationOriginImpl
|
||||
val ES6_INIT_FUNCTION by IrDeclarationOriginImpl
|
||||
val ES6_DELEGATING_CONSTRUCTOR_REPLACEMENT by IrStatementOriginImpl
|
||||
val ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT by IrDeclarationOriginImpl
|
||||
|
||||
val IrDeclaration.isEs6ConstructorReplacement: Boolean
|
||||
get() = origin == ES6_CONSTRUCTOR_REPLACEMENT || origin == ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ class JsCodeOutliningLowering(val backendContext: JsIrBackendContext) : BodyLowe
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
object SYNTHETIC_PRIMARY_CONSTRUCTOR : IrDeclarationOriginImpl("SYNTHETIC_PRIMARY_CONSTRUCTOR")
|
||||
companion object {
|
||||
val SYNTHETIC_PRIMARY_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||
}
|
||||
|
||||
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.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 {
|
||||
|
||||
|
||||
+1
-1
@@ -164,7 +164,7 @@ class PropertyLazyInitLowering(
|
||||
}
|
||||
|
||||
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 {
|
||||
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
|
||||
|
||||
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 fun getCoroutineBaseClass(function: IrFunction): IrClassSymbol
|
||||
|
||||
+4
-4
@@ -169,10 +169,10 @@ class IrElementToJsStatementTransformer : BaseIrElementToJsNodeTransformer<JsSta
|
||||
val jsInitializer = value?.accept(IrElementToJsExpressionTransformer(), context)
|
||||
|
||||
val syntheticVariable = when (declaration.origin) {
|
||||
is IrDeclarationOrigin.IR_TEMPORARY_VARIABLE -> true
|
||||
is IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER -> true
|
||||
is IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER -> true
|
||||
is ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT -> true
|
||||
IrDeclarationOrigin.IR_TEMPORARY_VARIABLE -> true
|
||||
IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER -> true
|
||||
IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER -> true
|
||||
ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT -> true
|
||||
else -> false
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@ internal class FragmentLocalFunctionPatchLowering(
|
||||
override fun visitCall(expression: IrCall): IrExpression {
|
||||
expression.transformChildrenVoid(this)
|
||||
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
|
||||
}
|
||||
val localsData = localDeclarationsData[localDeclarationsDataKey] ?: return expression
|
||||
|
||||
+3
-1
@@ -506,7 +506,9 @@ internal class JvmMultiFieldValueClassLowering(context: JvmBackendContext) : Jvm
|
||||
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() {
|
||||
val fieldsToRemove = mfvc.fields.filter { !it.isStatic }.toList()
|
||||
|
||||
+1
-1
@@ -439,7 +439,7 @@ class JvmOptimizationLowering(val context: JvmBackendContext) : FileLoweringPass
|
||||
if (!hasSameLineNumber(argument, expression)) {
|
||||
return null
|
||||
}
|
||||
return rewriteCompoundAssignmentAsPrefixIncrDecr(expression, argument, expression.origin is IrStatementOrigin.MINUSEQ)
|
||||
return rewriteCompoundAssignmentAsPrefixIncrDecr(expression, argument, expression.origin == IrStatementOrigin.MINUSEQ)
|
||||
}
|
||||
IrStatementOrigin.EQ -> {
|
||||
val value = expression.value
|
||||
|
||||
+4
-2
@@ -52,8 +52,10 @@ internal val propertyReferencePhase = makeIrFilePhase(
|
||||
)
|
||||
|
||||
internal class PropertyReferenceLowering(val context: JvmBackendContext) : IrElementTransformerVoidWithContext(), FileLoweringPass {
|
||||
// Marking a property reference with this origin causes it to not generate a class.
|
||||
object REFLECTED_PROPERTY_REFERENCE : IrStatementOriginImpl("REFLECTED_PROPERTY_REFERENCE")
|
||||
companion object {
|
||||
// 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?
|
||||
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
|
||||
* 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.
|
||||
|
||||
+50
-54
@@ -5,60 +5,56 @@
|
||||
|
||||
package org.jetbrains.kotlin.backend.jvm
|
||||
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
|
||||
|
||||
interface JvmLoweredDeclarationOrigin : IrDeclarationOrigin {
|
||||
object CLASS_STATIC_INITIALIZER : IrDeclarationOriginImpl("CLASS_STATIC_INITIALIZER")
|
||||
object DEFAULT_IMPLS : IrDeclarationOriginImpl("DEFAULT_IMPLS")
|
||||
object SUPER_INTERFACE_METHOD_BRIDGE : IrDeclarationOriginImpl("SUPER_INTERFACE_METHOD_BRIDGE")
|
||||
object FIELD_FOR_OUTER_THIS : IrDeclarationOriginImpl("FIELD_FOR_OUTER_THIS")
|
||||
object LAMBDA_IMPL : IrDeclarationOriginImpl("LAMBDA_IMPL")
|
||||
object FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL", isSynthetic = true)
|
||||
object SYNTHETIC_ACCESSOR : IrDeclarationOriginImpl("SYNTHETIC_ACCESSOR", isSynthetic = true)
|
||||
object SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR :
|
||||
IrDeclarationOriginImpl("SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR", isSynthetic = true)
|
||||
object SYNTHETIC_MARKER_PARAMETER : IrDeclarationOriginImpl("SYNTHETIC_MARKER_PARAMETER", isSynthetic = true)
|
||||
object TO_ARRAY : IrDeclarationOriginImpl("TO_ARRAY")
|
||||
object JVM_STATIC_WRAPPER : IrDeclarationOriginImpl("JVM_STATIC_WRAPPER")
|
||||
object JVM_OVERLOADS_WRAPPER : IrDeclarationOriginImpl("JVM_OVERLOADS_WRAPPER")
|
||||
object SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS :
|
||||
IrDeclarationOriginImpl("SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS", isSynthetic = true)
|
||||
object GENERATED_PROPERTY_REFERENCE : IrDeclarationOriginImpl("GENERATED_PROPERTY_REFERENCE", isSynthetic = true)
|
||||
object GENERATED_MEMBER_IN_CALLABLE_REFERENCE : IrDeclarationOriginImpl("GENERATED_MEMBER_IN_CALLABLE_REFERENCE", isSynthetic = false)
|
||||
object ENUM_MAPPINGS_FOR_WHEN : IrDeclarationOriginImpl("ENUM_MAPPINGS_FOR_WHEN", isSynthetic = true)
|
||||
object ENUM_MAPPINGS_FOR_ENTRIES : IrDeclarationOriginImpl("ENUM_MAPPINGS_FOR_ENTRIES", isSynthetic = true)
|
||||
object SYNTHETIC_INLINE_CLASS_MEMBER : IrDeclarationOriginImpl("SYNTHETIC_INLINE_CLASS_MEMBER", isSynthetic = true)
|
||||
object SYNTHETIC_MULTI_FIELD_VALUE_CLASS_MEMBER :
|
||||
IrDeclarationOriginImpl("SYNTHETIC_MULTI_FIELD_VALUE_CLASS_MEMBER", isSynthetic = true)
|
||||
object INLINE_CLASS_GENERATED_IMPL_METHOD : IrDeclarationOriginImpl("INLINE_CLASS_GENERATED_IMPL_METHOD")
|
||||
object MULTI_FIELD_VALUE_CLASS_GENERATED_IMPL_METHOD : IrDeclarationOriginImpl("MULTI_FIELD_VALUE_CLASS_GENERATED_IMPL_METHOD")
|
||||
object STATIC_INLINE_CLASS_REPLACEMENT : IrDeclarationOriginImpl("STATIC_INLINE_CLASS_REPLACEMENT")
|
||||
object STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT : IrDeclarationOriginImpl("STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT")
|
||||
object STATIC_INLINE_CLASS_CONSTRUCTOR : IrDeclarationOriginImpl("STATIC_INLINE_CLASS_CONSTRUCTOR")
|
||||
object STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR : IrDeclarationOriginImpl("STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR")
|
||||
object GENERATED_ASSERTION_ENABLED_FIELD : IrDeclarationOriginImpl("GENERATED_ASSERTION_ENABLED_FIELD", isSynthetic = true)
|
||||
object GENERATED_MULTI_FIELD_VALUE_CLASS_PARAMETER : IrDeclarationOriginImpl("GENERATED_MULTI_FIELD_VALUE_CLASS_PARAMETER")
|
||||
object TEMPORARY_MULTI_FIELD_VALUE_CLASS_PARAMETER : IrDeclarationOriginImpl("TEMPORARY_MULTI_FIELD_VALUE_CLASS_PARAMETER")
|
||||
object TEMPORARY_MULTI_FIELD_VALUE_CLASS_VARIABLE : IrDeclarationOriginImpl("TEMPORARY_MULTI_FIELD_VALUE_CLASS_VARIABLE")
|
||||
object MULTI_FIELD_VALUE_CLASS_REPRESENTATION_VARIABLE : IrDeclarationOriginImpl("MULTI_FIELD_VALUE_CLASS_REPRESENTATION_VARIABLE")
|
||||
object GENERATED_EXTENDED_MAIN : IrDeclarationOriginImpl("GENERATED_EXTENDED_MAIN", isSynthetic = true)
|
||||
object SUSPEND_IMPL_STATIC_FUNCTION : IrDeclarationOriginImpl("SUSPEND_IMPL_STATIC_FUNCTION", isSynthetic = true)
|
||||
object INTERFACE_COMPANION_PRIVATE_INSTANCE : IrDeclarationOriginImpl("INTERFACE_COMPANION_PRIVATE_INSTANCE", isSynthetic = true)
|
||||
object POLYMORPHIC_SIGNATURE_INSTANTIATION : IrDeclarationOriginImpl("POLYMORPHIC_SIGNATURE_INSTANTIATION", isSynthetic = true)
|
||||
object ENUM_CONSTRUCTOR_SYNTHETIC_PARAMETER : IrDeclarationOriginImpl("ENUM_CONSTRUCTOR_SYNTHETIC_PARAMETER", isSynthetic = true)
|
||||
object OBJECT_SUPER_CONSTRUCTOR_PARAMETER : IrDeclarationOriginImpl("OBJECT_SUPER_CONSTRUCTOR_PARAMETER", isSynthetic = true)
|
||||
object CONTINUATION_CLASS : IrDeclarationOriginImpl("CONTINUATION_CLASS")
|
||||
object SUSPEND_LAMBDA : IrDeclarationOriginImpl("SUSPEND_LAMBDA")
|
||||
object FOR_INLINE_STATE_MACHINE_TEMPLATE : IrDeclarationOriginImpl("FOR_INLINE_TEMPLATE")
|
||||
object FOR_INLINE_STATE_MACHINE_TEMPLATE_CAPTURES_CROSSINLINE : IrDeclarationOriginImpl("FOR_INLINE_TEMPLATE_CROSSINLINE")
|
||||
object CONTINUATION_CLASS_RESULT_FIELD: IrDeclarationOriginImpl("CONTINUATION_CLASS_RESULT_FIELD", isSynthetic = true)
|
||||
object COMPANION_PROPERTY_BACKING_FIELD : IrDeclarationOriginImpl("COMPANION_PROPERTY_BACKING_FIELD")
|
||||
object FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE : IrDeclarationOriginImpl("FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE")
|
||||
object ABSTRACT_BRIDGE_STUB : IrDeclarationOriginImpl("ABSTRACT_BRIDGE_STUB")
|
||||
object INVOKEDYNAMIC_CALL_TARGET : IrDeclarationOriginImpl("INVOKEDYNAMIC_CALL_TARGET")
|
||||
object INLINE_LAMBDA : IrDeclarationOriginImpl("INLINE_LAMBDA")
|
||||
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)
|
||||
object JvmLoweredDeclarationOrigin {
|
||||
val CLASS_STATIC_INITIALIZER by IrDeclarationOriginImpl
|
||||
val DEFAULT_IMPLS by IrDeclarationOriginImpl
|
||||
val SUPER_INTERFACE_METHOD_BRIDGE by IrDeclarationOriginImpl
|
||||
val FIELD_FOR_OUTER_THIS by IrDeclarationOriginImpl
|
||||
val LAMBDA_IMPL by IrDeclarationOriginImpl
|
||||
val FUNCTION_REFERENCE_IMPL by IrDeclarationOriginImpl.Synthetic
|
||||
val SYNTHETIC_ACCESSOR by IrDeclarationOriginImpl.Synthetic
|
||||
val SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR by IrDeclarationOriginImpl.Synthetic
|
||||
val SYNTHETIC_MARKER_PARAMETER by IrDeclarationOriginImpl.Synthetic
|
||||
val TO_ARRAY by IrDeclarationOriginImpl
|
||||
val JVM_STATIC_WRAPPER by IrDeclarationOriginImpl
|
||||
val JVM_OVERLOADS_WRAPPER by IrDeclarationOriginImpl
|
||||
val SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS by IrDeclarationOriginImpl.Synthetic
|
||||
val GENERATED_PROPERTY_REFERENCE by IrDeclarationOriginImpl.Synthetic
|
||||
val GENERATED_MEMBER_IN_CALLABLE_REFERENCE by IrDeclarationOriginImpl
|
||||
val ENUM_MAPPINGS_FOR_WHEN by IrDeclarationOriginImpl.Synthetic
|
||||
val ENUM_MAPPINGS_FOR_ENTRIES by IrDeclarationOriginImpl.Synthetic
|
||||
val SYNTHETIC_INLINE_CLASS_MEMBER by IrDeclarationOriginImpl.Synthetic
|
||||
val SYNTHETIC_MULTI_FIELD_VALUE_CLASS_MEMBER by IrDeclarationOriginImpl.Synthetic
|
||||
val INLINE_CLASS_GENERATED_IMPL_METHOD by IrDeclarationOriginImpl
|
||||
val MULTI_FIELD_VALUE_CLASS_GENERATED_IMPL_METHOD by IrDeclarationOriginImpl
|
||||
val STATIC_INLINE_CLASS_REPLACEMENT by IrDeclarationOriginImpl
|
||||
val STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT by IrDeclarationOriginImpl
|
||||
val STATIC_INLINE_CLASS_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||
val STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||
val GENERATED_ASSERTION_ENABLED_FIELD by IrDeclarationOriginImpl.Synthetic
|
||||
val GENERATED_MULTI_FIELD_VALUE_CLASS_PARAMETER by IrDeclarationOriginImpl
|
||||
val TEMPORARY_MULTI_FIELD_VALUE_CLASS_PARAMETER by IrDeclarationOriginImpl
|
||||
val TEMPORARY_MULTI_FIELD_VALUE_CLASS_VARIABLE by IrDeclarationOriginImpl
|
||||
val MULTI_FIELD_VALUE_CLASS_REPRESENTATION_VARIABLE by IrDeclarationOriginImpl
|
||||
val GENERATED_EXTENDED_MAIN by IrDeclarationOriginImpl.Synthetic
|
||||
val SUSPEND_IMPL_STATIC_FUNCTION by IrDeclarationOriginImpl.Synthetic
|
||||
val INTERFACE_COMPANION_PRIVATE_INSTANCE by IrDeclarationOriginImpl.Synthetic
|
||||
val POLYMORPHIC_SIGNATURE_INSTANTIATION by IrDeclarationOriginImpl.Synthetic
|
||||
val ENUM_CONSTRUCTOR_SYNTHETIC_PARAMETER by IrDeclarationOriginImpl.Synthetic
|
||||
val OBJECT_SUPER_CONSTRUCTOR_PARAMETER by IrDeclarationOriginImpl.Synthetic
|
||||
val CONTINUATION_CLASS by IrDeclarationOriginImpl
|
||||
val SUSPEND_LAMBDA by IrDeclarationOriginImpl
|
||||
val FOR_INLINE_STATE_MACHINE_TEMPLATE by IrDeclarationOriginImpl
|
||||
val FOR_INLINE_STATE_MACHINE_TEMPLATE_CAPTURES_CROSSINLINE by IrDeclarationOriginImpl
|
||||
val CONTINUATION_CLASS_RESULT_FIELD by IrDeclarationOriginImpl.Synthetic
|
||||
val COMPANION_PROPERTY_BACKING_FIELD by IrDeclarationOriginImpl
|
||||
val FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE by IrDeclarationOriginImpl
|
||||
val ABSTRACT_BRIDGE_STUB by IrDeclarationOriginImpl
|
||||
val INVOKEDYNAMIC_CALL_TARGET by IrDeclarationOriginImpl
|
||||
val INLINE_LAMBDA by IrDeclarationOriginImpl
|
||||
val PROXY_FUN_FOR_METAFACTORY by IrDeclarationOriginImpl
|
||||
val SYNTHETIC_PROXY_FUN_FOR_METAFACTORY by IrDeclarationOriginImpl.Synthetic
|
||||
val DESERIALIZE_LAMBDA_FUN by IrDeclarationOriginImpl.Synthetic
|
||||
}
|
||||
|
||||
+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) }
|
||||
|
||||
@Suppress("ClassName")
|
||||
private object FLATTENED_NOTHING_DEFAULT_VALUE : IrStatementOriginImpl("FLATTENED_NOTHING_DEFAULT_VALUE")
|
||||
private val FLATTENED_NOTHING_DEFAULT_VALUE by IrStatementOriginImpl
|
||||
|
||||
fun mapFunctionMfvcStructures(
|
||||
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
|
||||
}
|
||||
|
||||
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.name.Name
|
||||
|
||||
private object OPTIMISED_WHEN_SUBJECT : IrDeclarationOriginImpl("OPTIMISED_WHEN_SUBJECT")
|
||||
private val OPTIMISED_WHEN_SUBJECT by IrDeclarationOriginImpl
|
||||
|
||||
class WasmStringSwitchOptimizerLowering(
|
||||
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.name.Name
|
||||
|
||||
internal val TEMP_CLASS_FOR_INTERPRETER = object : IrDeclarationOriginImpl("TEMP_CLASS_FOR_INTERPRETER") {}
|
||||
internal val TEMP_FUNCTION_FOR_INTERPRETER = object : IrDeclarationOriginImpl("TEMP_FUNCTION_FOR_INTERPRETER") {}
|
||||
internal val TEMP_CLASS_FOR_INTERPRETER = IrDeclarationOriginImpl("TEMP_CLASS_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)
|
||||
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 {
|
||||
val classOrigin = object : IrDeclarationOriginImpl("FUNCTION_INTERFACE_CLASS") {}
|
||||
val memberOrigin = object : IrDeclarationOriginImpl("FUNCTION_INTERFACE_MEMBER") {}
|
||||
val classOrigin = IrDeclarationOriginImpl("FUNCTION_INTERFACE_CLASS")
|
||||
val memberOrigin = IrDeclarationOriginImpl("FUNCTION_INTERFACE_MEMBER")
|
||||
const val offset = SYNTHETIC_OFFSET
|
||||
|
||||
internal fun functionClassName(isK: Boolean, isSuspend: Boolean, arity: Int): String =
|
||||
|
||||
@@ -215,7 +215,7 @@ abstract class IrBuiltIns {
|
||||
|
||||
companion object {
|
||||
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
|
||||
|
||||
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 {
|
||||
object DEFINED : IrDeclarationOriginImpl("DEFINED")
|
||||
object FAKE_OVERRIDE : IrDeclarationOriginImpl("FAKE_OVERRIDE")
|
||||
object FOR_LOOP_ITERATOR : IrDeclarationOriginImpl("FOR_LOOP_ITERATOR")
|
||||
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")
|
||||
val name: String
|
||||
val isSynthetic: Boolean
|
||||
get() = false
|
||||
|
||||
object FILE_CLASS : IrDeclarationOriginImpl("FILE_CLASS")
|
||||
object SYNTHETIC_FILE_CLASS : IrDeclarationOriginImpl("SYNTHETIC_FILE_CLASS", isSynthetic = true)
|
||||
object JVM_MULTIFILE_CLASS : IrDeclarationOriginImpl("JVM_MULTIFILE_CLASS")
|
||||
object ERROR_CLASS : IrDeclarationOriginImpl("ERROR_CLASS")
|
||||
companion object {
|
||||
val DEFINED by IrDeclarationOriginImpl
|
||||
val FAKE_OVERRIDE by IrDeclarationOriginImpl
|
||||
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")
|
||||
object SCRIPT_THIS_RECEIVER : IrDeclarationOriginImpl("SCRIPT_THIS_RECEIVER")
|
||||
object SCRIPT_STATEMENT : IrDeclarationOriginImpl("SCRIPT_STATEMENT")
|
||||
object SCRIPT_EARLIER_SCRIPTS : IrDeclarationOriginImpl("SCRIPT_EARLIER_SCRIPTS")
|
||||
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)
|
||||
val FILE_CLASS by IrDeclarationOriginImpl
|
||||
val SYNTHETIC_FILE_CLASS by IrDeclarationOriginImpl.Synthetic
|
||||
val JVM_MULTIFILE_CLASS by IrDeclarationOriginImpl
|
||||
val ERROR_CLASS by IrDeclarationOriginImpl
|
||||
|
||||
object FIELD_FOR_ENUM_ENTRY : IrDeclarationOriginImpl("FIELD_FOR_ENUM_ENTRY")
|
||||
object SYNTHETIC_HELPER_FOR_ENUM_VALUES : IrDeclarationOriginImpl("SYNTHETIC_HELPER_FOR_ENUM_VALUES", isSynthetic = true)
|
||||
object SYNTHETIC_HELPER_FOR_ENUM_ENTRIES : IrDeclarationOriginImpl("SYNTHETIC_HELPER_FOR_ENUM_ENTRIES", isSynthetic = true)
|
||||
object FIELD_FOR_ENUM_VALUES : IrDeclarationOriginImpl("FIELD_FOR_ENUM_VALUES", isSynthetic = true)
|
||||
object FIELD_FOR_ENUM_ENTRIES: IrDeclarationOriginImpl("FIELD_FOR_ENUM_ENTRIES", isSynthetic = true)
|
||||
object PROPERTY_FOR_ENUM_ENTRIES: IrDeclarationOriginImpl("PROPERTY_FOR_ENUM_ENTRIES", isSynthetic = false)
|
||||
object FIELD_FOR_OBJECT_INSTANCE : IrDeclarationOriginImpl("FIELD_FOR_OBJECT_INSTANCE")
|
||||
object FIELD_FOR_CLASS_CONTEXT_RECEIVER : IrDeclarationOriginImpl("FIELD_FOR_CLASS_CONTEXT_RECEIVER", isSynthetic = true)
|
||||
val SCRIPT_CLASS by IrDeclarationOriginImpl
|
||||
val SCRIPT_THIS_RECEIVER by IrDeclarationOriginImpl
|
||||
val SCRIPT_STATEMENT by IrDeclarationOriginImpl
|
||||
val SCRIPT_EARLIER_SCRIPTS by IrDeclarationOriginImpl
|
||||
val SCRIPT_CALL_PARAMETER by IrDeclarationOriginImpl
|
||||
val SCRIPT_IMPLICIT_RECEIVER by IrDeclarationOriginImpl
|
||||
val SCRIPT_PROVIDED_PROPERTY by IrDeclarationOriginImpl
|
||||
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)
|
||||
object ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE : IrDeclarationOriginImpl("ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE")
|
||||
object ADAPTER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_FOR_SUSPEND_CONVERSION", isSynthetic = true)
|
||||
object ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION")
|
||||
object ADAPTER_FOR_FUN_INTERFACE_CONSTRUCTOR : IrDeclarationOriginImpl("ADAPTER_FOR_FUN_INTERFACE_CONSTRUCTOR", isSynthetic = true)
|
||||
val FIELD_FOR_ENUM_ENTRY by IrDeclarationOriginImpl
|
||||
val SYNTHETIC_HELPER_FOR_ENUM_VALUES by IrDeclarationOriginImpl.Synthetic
|
||||
val SYNTHETIC_HELPER_FOR_ENUM_ENTRIES by IrDeclarationOriginImpl.Synthetic
|
||||
val FIELD_FOR_ENUM_VALUES by IrDeclarationOriginImpl.Synthetic
|
||||
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")
|
||||
object SYNTHETIC_GENERATED_SAM_IMPLEMENTATION : IrDeclarationOriginImpl("SYNTHETIC_GENERATED_SAM_IMPLEMENTATION", isSynthetic = true)
|
||||
val ADAPTER_FOR_CALLABLE_REFERENCE by IrDeclarationOriginImpl.Synthetic
|
||||
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)
|
||||
object CONTINUATION : IrDeclarationOriginImpl("CONTINUATION", isSynthetic = true)
|
||||
object LOWERED_SUSPEND_FUNCTION : IrDeclarationOriginImpl("LOWERED_SUSPEND_FUNCTION", isSynthetic = true)
|
||||
val SYNTHETIC_JAVA_PROPERTY_DELEGATE by IrDeclarationOriginImpl.Synthetic
|
||||
|
||||
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
|
||||
@@ -103,9 +113,7 @@ interface IrDeclarationOrigin {
|
||||
override val name: String
|
||||
get() = "GENERATED[${pluginId}]"
|
||||
|
||||
override fun toString(): String {
|
||||
return name
|
||||
}
|
||||
override fun toString(): String = name
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
@@ -113,20 +121,16 @@ interface IrDeclarationOrigin {
|
||||
return pluginKey == other.pluginKey
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return pluginKey.hashCode()
|
||||
}
|
||||
override fun hashCode(): Int = pluginKey.hashCode()
|
||||
}
|
||||
|
||||
val name: String
|
||||
val isSynthetic: Boolean get() = false
|
||||
}
|
||||
|
||||
abstract class IrDeclarationOriginImpl(
|
||||
class IrDeclarationOriginImpl(
|
||||
override val name: String,
|
||||
override val isSynthetic: Boolean = false
|
||||
) : IrDeclarationOrigin {
|
||||
) : IrDeclarationOrigin, ReadOnlyProperty<Any?, IrDeclarationOriginImpl> {
|
||||
override fun toString(): String = name
|
||||
override fun getValue(thisRef: Any?, property: KProperty<*>): IrDeclarationOriginImpl = this
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
@@ -137,7 +141,15 @@ abstract class IrDeclarationOriginImpl(
|
||||
return true
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return name.hashCode()
|
||||
override fun hashCode(): Int = 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.utils.SmartList
|
||||
|
||||
private val SCRIPT_ORIGIN = object : IrDeclarationOriginImpl("SCRIPT") {}
|
||||
val SCRIPT_K2_ORIGIN = object : IrDeclarationOriginImpl("SCRIPT_K2") {}
|
||||
private val SCRIPT_ORIGIN = IrDeclarationOriginImpl("SCRIPT")
|
||||
val SCRIPT_K2_ORIGIN = IrDeclarationOriginImpl("SCRIPT_K2")
|
||||
|
||||
class IrScriptImpl(
|
||||
override val symbol: IrScriptSymbol,
|
||||
|
||||
@@ -5,96 +5,113 @@
|
||||
|
||||
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
|
||||
|
||||
companion object : PropertyDelegateProvider<Any?, ReadOnlyProperty<Any?, IrStatementOriginImpl>> {
|
||||
override fun provideDelegate(thisRef: Any?, property: KProperty<*>): ReadOnlyProperty<Any?, IrStatementOriginImpl> =
|
||||
IrStatementOriginImpl(property.name)
|
||||
}
|
||||
}
|
||||
|
||||
interface IrStatementOrigin {
|
||||
object SAFE_CALL : IrStatementOriginImpl("SAFE_CALL")
|
||||
val debugName: String
|
||||
|
||||
object UMINUS : IrStatementOriginImpl("UMINUS")
|
||||
object UPLUS : IrStatementOriginImpl("UPLUS")
|
||||
object EXCL : IrStatementOriginImpl("EXCL")
|
||||
object EXCLEXCL : IrStatementOriginImpl("EXCLEXCL")
|
||||
companion object {
|
||||
val SAFE_CALL by IrStatementOriginImpl
|
||||
|
||||
object ELVIS : IrStatementOriginImpl("ELVIS")
|
||||
val UMINUS by IrStatementOriginImpl
|
||||
val UPLUS by IrStatementOriginImpl
|
||||
val EXCL by IrStatementOriginImpl
|
||||
val EXCLEXCL by IrStatementOriginImpl
|
||||
|
||||
object LT : IrStatementOriginImpl("LT")
|
||||
object GT : IrStatementOriginImpl("GT")
|
||||
object LTEQ : IrStatementOriginImpl("LTEQ")
|
||||
object GTEQ : IrStatementOriginImpl("GTEQ")
|
||||
val ELVIS by IrStatementOriginImpl
|
||||
|
||||
object EQEQ : IrStatementOriginImpl("EQEQ")
|
||||
object EQEQEQ : IrStatementOriginImpl("EQEQEQ")
|
||||
object EXCLEQ : IrStatementOriginImpl("EXCLEQ")
|
||||
object EXCLEQEQ : IrStatementOriginImpl("EXCLEQEQ")
|
||||
val LT by IrStatementOriginImpl
|
||||
val GT by IrStatementOriginImpl
|
||||
val LTEQ by IrStatementOriginImpl
|
||||
val GTEQ by IrStatementOriginImpl
|
||||
|
||||
object IN : IrStatementOriginImpl("IN")
|
||||
object NOT_IN : IrStatementOriginImpl("NOT_IN")
|
||||
object ANDAND : IrStatementOriginImpl("ANDAND")
|
||||
object OROR : IrStatementOriginImpl("OROR")
|
||||
val EQEQ by IrStatementOriginImpl
|
||||
val EQEQEQ by IrStatementOriginImpl
|
||||
val EXCLEQ by IrStatementOriginImpl
|
||||
val EXCLEQEQ by IrStatementOriginImpl
|
||||
|
||||
object PLUS : IrStatementOriginImpl("PLUS")
|
||||
object MINUS : IrStatementOriginImpl("MINUS")
|
||||
object MUL : IrStatementOriginImpl("MUL")
|
||||
object DIV : IrStatementOriginImpl("DIV")
|
||||
object PERC : IrStatementOriginImpl("PERC")
|
||||
object RANGE : IrStatementOriginImpl("RANGE")
|
||||
object RANGE_UNTIL : IrStatementOriginImpl("RANGE_UNTIL")
|
||||
val IN by IrStatementOriginImpl
|
||||
val NOT_IN by IrStatementOriginImpl
|
||||
val ANDAND by IrStatementOriginImpl
|
||||
val OROR by IrStatementOriginImpl
|
||||
|
||||
object INVOKE : IrStatementOriginImpl("INVOKE")
|
||||
object VARIABLE_AS_FUNCTION : IrStatementOriginImpl("VARIABLE_AS_FUNCTION")
|
||||
object GET_ARRAY_ELEMENT : IrStatementOriginImpl("GET_ARRAY_ELEMENT")
|
||||
val PLUS by IrStatementOriginImpl
|
||||
val MINUS by IrStatementOriginImpl
|
||||
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")
|
||||
object PREFIX_DECR : IrStatementOriginImpl("PREFIX_DECR")
|
||||
object POSTFIX_INCR : IrStatementOriginImpl("POSTFIX_INCR")
|
||||
object POSTFIX_DECR : IrStatementOriginImpl("POSTFIX_DECR")
|
||||
val INVOKE by IrStatementOriginImpl
|
||||
val VARIABLE_AS_FUNCTION by IrStatementOriginImpl
|
||||
val GET_ARRAY_ELEMENT by IrStatementOriginImpl
|
||||
|
||||
object EQ : IrStatementOriginImpl("EQ")
|
||||
object PLUSEQ : IrStatementOriginImpl("PLUSEQ")
|
||||
object MINUSEQ : IrStatementOriginImpl("MINUSEQ")
|
||||
object MULTEQ : IrStatementOriginImpl("MULTEQ")
|
||||
object DIVEQ : IrStatementOriginImpl("DIVEQ")
|
||||
object PERCEQ : IrStatementOriginImpl("PERCEQ")
|
||||
val PREFIX_INCR by IrStatementOriginImpl
|
||||
val PREFIX_DECR by IrStatementOriginImpl
|
||||
val POSTFIX_INCR by IrStatementOriginImpl
|
||||
val POSTFIX_DECR by IrStatementOriginImpl
|
||||
|
||||
object ARGUMENTS_REORDERING_FOR_CALL : IrStatementOriginImpl("ARGUMENTS_REORDERING_FOR_CALL")
|
||||
object DESTRUCTURING_DECLARATION : IrStatementOriginImpl("DESTRUCTURING_DECLARATION")
|
||||
val EQ by IrStatementOriginImpl
|
||||
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")
|
||||
object GET_LOCAL_PROPERTY : IrStatementOriginImpl("GET_LOCAL_PROPERTY")
|
||||
val ARGUMENTS_REORDERING_FOR_CALL by IrStatementOriginImpl
|
||||
val DESTRUCTURING_DECLARATION by IrStatementOriginImpl
|
||||
|
||||
object IF : IrStatementOriginImpl("IF")
|
||||
object WHEN : IrStatementOriginImpl("WHEN")
|
||||
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")
|
||||
val GET_PROPERTY by IrStatementOriginImpl
|
||||
val GET_LOCAL_PROPERTY by IrStatementOriginImpl
|
||||
|
||||
object LAMBDA : IrStatementOriginImpl("LAMBDA")
|
||||
object DEFAULT_VALUE : IrStatementOriginImpl("DEFAULT_VALUE")
|
||||
object ANONYMOUS_FUNCTION : IrStatementOriginImpl("ANONYMOUS_FUNCTION")
|
||||
object OBJECT_LITERAL : IrStatementOriginImpl("OBJECT_LITERAL")
|
||||
object ADAPTED_FUNCTION_REFERENCE : IrStatementOriginImpl("ADAPTED_FUNCTION_REFERENCE")
|
||||
object SUSPEND_CONVERSION : IrStatementOriginImpl("SUSPEND_CONVERSION")
|
||||
object FUN_INTERFACE_CONSTRUCTOR_REFERENCE : IrStatementOriginImpl("FUN_INTERFACE_CONSTRUCTOR_REFERENCE")
|
||||
val IF by IrStatementOriginImpl
|
||||
val WHEN by IrStatementOriginImpl
|
||||
val WHEN_COMMA by IrStatementOriginImpl
|
||||
val WHILE_LOOP by IrStatementOriginImpl
|
||||
val DO_WHILE_LOOP by IrStatementOriginImpl
|
||||
val FOR_LOOP by IrStatementOriginImpl
|
||||
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")
|
||||
object INITIALIZE_FIELD : IrStatementOriginImpl("INITIALIZE_FIELD")
|
||||
val LAMBDA by IrStatementOriginImpl
|
||||
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 {
|
||||
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.expressions.IrCall
|
||||
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.getPackageFragment
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
+13
-6
@@ -5,19 +5,26 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.linkage.partial
|
||||
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
|
||||
|
||||
@Suppress("KDocUnresolvedReference")
|
||||
enum class PartiallyLinkedDeclarationOrigin : IrDeclarationOrigin {
|
||||
object PartiallyLinkedDeclarationOrigin {
|
||||
/** The unresolved (missing) declaration */
|
||||
MISSING_DECLARATION,
|
||||
val MISSING_DECLARATION by IrDeclarationOriginImpl
|
||||
|
||||
/** 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 */
|
||||
AMBIGUOUS_NON_OVERRIDDEN_CALLABLE_MEMBER,
|
||||
val AMBIGUOUS_NON_OVERRIDDEN_CALLABLE_MEMBER by IrDeclarationOriginImpl
|
||||
|
||||
/** 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
|
||||
}
|
||||
|
||||
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.
|
||||
// Let's take the coordinates of the parent.
|
||||
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.lazy.IrLazyDeclarationBase
|
||||
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.linkage.partial.*
|
||||
import org.jetbrains.kotlin.ir.linkage.partial.PartialLinkageCase.*
|
||||
@@ -457,7 +457,7 @@ internal class PartiallyLinkedIrTreePatcher(
|
||||
|
||||
override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
|
||||
// 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.
|
||||
else {
|
||||
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.util.parentAsClass
|
||||
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.IrBlockBody as ProtoBlockBody
|
||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrBranch as ProtoBranch
|
||||
@@ -857,11 +858,10 @@ class IrBodyDeserializer(
|
||||
code: () -> Long
|
||||
): S? = if (condition) deserializeTypedSymbol(code(), fallbackSymbolKind, remap = true) else null
|
||||
|
||||
companion object {
|
||||
|
||||
private val allKnownStatementOrigins = IrStatementOrigin::class.nestedClasses.toList()
|
||||
|
||||
private val statementOriginIndex =
|
||||
allKnownStatementOrigins.mapNotNull { it.objectInstance as? IrStatementOriginImpl }.associateBy { it.debugName }
|
||||
private companion object {
|
||||
private val statementOriginIndex = IrStatementOrigin.Companion::class
|
||||
.declaredMemberProperties
|
||||
.mapNotNull { it.get(IrStatementOrigin.Companion) as? IrStatementOrigin }
|
||||
.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.utils.*
|
||||
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.IrClass as ProtoClass
|
||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrConstructor as ProtoConstructor
|
||||
@@ -252,7 +253,7 @@ class IrDeclarationDeserializer(
|
||||
private inline fun <T> withDeserializedIrDeclarationBase(
|
||||
proto: ProtoDeclarationBase,
|
||||
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 {
|
||||
val (s, uid) = symbolDeserializer.deserializeIrSymbolToDeclare(proto.symbol)
|
||||
val coordinates = BinaryCoordinates.decode(proto.coordinates)
|
||||
@@ -556,7 +557,7 @@ class IrDeclarationDeserializer(
|
||||
proto: ProtoFunctionBase,
|
||||
setParent: Boolean = true,
|
||||
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 ->
|
||||
val functionSymbol: S = symbol.checkSymbolType(fallbackSymbolKind)
|
||||
symbolTable.withScope(functionSymbol) {
|
||||
@@ -621,7 +622,8 @@ class IrDeclarationDeserializer(
|
||||
isFakeOverride = flags.isFakeOverride,
|
||||
)
|
||||
}.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(
|
||||
proto: ProtoLocalDelegatedProperty,
|
||||
setParent: Boolean = true
|
||||
setParent: Boolean = true,
|
||||
): IrLocalDelegatedProperty =
|
||||
withDeserializedIrDeclarationBase(proto.base, setParent) { symbol, _, startOffset, endOffset, origin, fcode ->
|
||||
val flags = LocalVariableFlags.decode(fcode)
|
||||
@@ -794,17 +796,20 @@ class IrDeclarationDeserializer(
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val allKnownDeclarationOrigins = IrDeclarationOrigin::class.nestedClasses.toList()
|
||||
private val declarationOriginIndex =
|
||||
allKnownDeclarationOrigins.mapNotNull { it.objectInstance as? IrDeclarationOriginImpl }.associateBy { it.name }
|
||||
private companion object {
|
||||
private val declarationOriginIndex by lazy {
|
||||
IrDeclarationOrigin.Companion::class
|
||||
.declaredMemberProperties
|
||||
.mapNotNull { it.get(IrDeclarationOrigin.Companion) as? IrDeclarationOriginImpl }
|
||||
.associateBy { it.name }
|
||||
}
|
||||
}
|
||||
|
||||
private fun deserializeIrDeclarationOrigin(protoName: Int): IrDeclarationOrigin {
|
||||
val originName = libraryFile.string(protoName)
|
||||
return IrDeclarationOrigin.GeneratedByPlugin.fromSerializedString(originName)
|
||||
?: declarationOriginIndex[originName]
|
||||
?: object : IrDeclarationOriginImpl(originName) {}
|
||||
?: IrDeclarationOriginImpl(originName)
|
||||
}
|
||||
|
||||
fun deserializeDeclaration(proto: ProtoDeclaration, setParent: Boolean = true): IrDeclaration {
|
||||
|
||||
+1
-1
@@ -92,7 +92,7 @@ class FileDeserializationState(
|
||||
linker.fakeOverrideBuilder,
|
||||
compatibilityMode = moduleDeserializer.compatibilityMode,
|
||||
linker.partialLinkageSupport.isEnabled,
|
||||
internationService = linker.internationService
|
||||
internationService = linker.internationService,
|
||||
)
|
||||
|
||||
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 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) {
|
||||
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.expressions.IrStatementOriginImpl
|
||||
|
||||
interface JsStatementOrigins {
|
||||
object BIND_CALL : IrStatementOriginImpl("BIND_CALL")
|
||||
object STATEMENT_ORIGIN_COROUTINE_IMPL : IrStatementOriginImpl("COROUTINE_IMPL")
|
||||
object SYNTHESIZED_STATEMENT : IrStatementOriginImpl("SYNTHESIZED_STATEMENT")
|
||||
object CALLABLE_REFERENCE_CREATE : IrStatementOriginImpl("CALLABLE_REFERENCE_CREATE")
|
||||
object CALLABLE_REFERENCE_INVOKE : IrStatementOriginImpl("CALLABLE_REFERENCE_INVOKE")
|
||||
object EXPLICIT_INVOKE : IrStatementOriginImpl("EXPLICIT_INVOKE")
|
||||
object FACTORY_ORIGIN : IrDeclarationOriginImpl("FACTORY_ORIGIN")
|
||||
object COROUTINE_ROOT_LOOP : IrStatementOriginImpl("COROUTINE_ROOT_LOOP")
|
||||
object COROUTINE_SWITCH : IrStatementOriginImpl("COROUTINE_SWITCH")
|
||||
object CLASS_REFERENCE : IrStatementOriginImpl("CLASS_REFERENCE")
|
||||
object IMPLEMENTATION_DELEGATION_CALL : IrStatementOriginImpl("IMPLEMENTATION_DELEGATION_CALL")
|
||||
object JsStatementOrigins {
|
||||
val BIND_CALL by IrStatementOriginImpl
|
||||
val STATEMENT_ORIGIN_COROUTINE_IMPL = IrStatementOriginImpl("COROUTINE_IMPL")
|
||||
val SYNTHESIZED_STATEMENT by IrStatementOriginImpl
|
||||
val CALLABLE_REFERENCE_CREATE by IrStatementOriginImpl
|
||||
val CALLABLE_REFERENCE_INVOKE by IrStatementOriginImpl
|
||||
val EXPLICIT_INVOKE by IrStatementOriginImpl
|
||||
|
||||
val FACTORY_ORIGIN by IrDeclarationOriginImpl
|
||||
|
||||
val COROUTINE_ROOT_LOOP by IrStatementOriginImpl
|
||||
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
|
||||
}
|
||||
|
||||
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) =
|
||||
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.util.OperatorNameConventions
|
||||
|
||||
internal object DECLARATION_ORIGIN_FUNCTION_CLASS : IrDeclarationOriginImpl("DECLARATION_ORIGIN_FUNCTION_CLASS")
|
||||
internal val DECLARATION_ORIGIN_FUNCTION_CLASS by IrDeclarationOriginImpl
|
||||
|
||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||
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.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 {
|
||||
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 {
|
||||
val constructor = generateKotlinFunctionClass()
|
||||
|
||||
+4
-4
@@ -151,7 +151,7 @@ internal class KotlinCBridgeBuilder(
|
||||
isKotlinToC: Boolean,
|
||||
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 cBridgeBuilder = CFunctionBuilder()
|
||||
@@ -261,7 +261,7 @@ internal class CCallBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
sealed class CBridgeOrigin(name: String): IrDeclarationOriginImpl(name, isSynthetic = true) {
|
||||
object KOTLIN_TO_C_BRIDGE: CBridgeOrigin("KOTLIN_TO_C_BRIDGE")
|
||||
object C_TO_KOTLIN_BRIDGE: CBridgeOrigin("C_TO_KOTLIN_BRIDGE")
|
||||
object CBridgeOrigin {
|
||||
val KOTLIN_TO_C_BRIDGE by IrDeclarationOriginImpl.Synthetic
|
||||
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.
|
||||
*/
|
||||
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.
|
||||
|
||||
+3
-1
@@ -288,5 +288,7 @@ internal class PropertyDelegationLowering(val generationState: NativeGenerationS
|
||||
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.declarations.*
|
||||
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.types.classifierOrNull
|
||||
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) {
|
||||
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 {
|
||||
private object DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
|
||||
|
||||
companion object {
|
||||
private val DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL = IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
|
||||
|
||||
fun isLoweredFunctionReference(declaration: IrDeclaration): Boolean =
|
||||
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
|
||||
|
||||
internal class InitializersLowering(val context: CommonBackendContext) : ClassLoweringPass {
|
||||
|
||||
object STATEMENT_ORIGIN_ANONYMOUS_INITIALIZER : IrStatementOriginImpl("ANONYMOUS_INITIALIZER")
|
||||
|
||||
object DECLARATION_ORIGIN_ANONYMOUS_INITIALIZER : IrDeclarationOriginImpl("ANONYMOUS_INITIALIZER")
|
||||
companion object {
|
||||
val STATEMENT_ORIGIN_ANONYMOUS_INITIALIZER = IrStatementOriginImpl("ANONYMOUS_INITIALIZER")
|
||||
val DECLARATION_ORIGIN_ANONYMOUS_INITIALIZER = IrDeclarationOriginImpl("ANONYMOUS_INITIALIZER")
|
||||
}
|
||||
|
||||
override fun lower(irClass: IrClass) {
|
||||
if (irClass.isInterface) return
|
||||
|
||||
+3
-2
@@ -312,8 +312,9 @@ private class InteropLoweringPart1(val generationState: NativeGenerationState) :
|
||||
}
|
||||
}
|
||||
|
||||
private object OVERRIDING_INITIALIZER_BY_CONSTRUCTOR :
|
||||
IrDeclarationOriginImpl("OVERRIDING_INITIALIZER_BY_CONSTRUCTOR")
|
||||
private companion object {
|
||||
private val OVERRIDING_INITIALIZER_BY_CONSTRUCTOR by IrDeclarationOriginImpl
|
||||
}
|
||||
|
||||
private fun IrConstructor.overridesConstructor(other: IrConstructor): Boolean {
|
||||
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
|
||||
object IrStatementOriginFieldPreInit : IrStatementOriginImpl("FIELD_PRE_INIT")
|
||||
|
||||
companion object {
|
||||
// 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.name.Name
|
||||
|
||||
internal object DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER : IrDeclarationOriginImpl("STATIC_GLOBAL_INITIALIZER")
|
||||
internal object 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_GLOBAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_GLOBAL_INITIALIZER")
|
||||
internal val DECLARATION_ORIGIN_STATIC_THREAD_LOCAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_THREAD_LOCAL_INITIALIZER")
|
||||
internal val DECLARATION_ORIGIN_STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER")
|
||||
|
||||
internal val IrFunction.isStaticInitializer: Boolean
|
||||
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
|
||||
|
||||
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 {
|
||||
val TEST_SUITE_CLASS by IrDeclarationOriginImpl
|
||||
val TEST_SUITE_GENERATED_MEMBER by IrDeclarationOriginImpl
|
||||
|
||||
val COMPANION_GETTER_NAME = Name.identifier("getCompanion")
|
||||
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.ir.util.*
|
||||
|
||||
object IR_DECLARATION_ORIGIN_VOLATILE : IrDeclarationOriginImpl("VOLATILE")
|
||||
val IR_DECLARATION_ORIGIN_VOLATILE = IrDeclarationOriginImpl("VOLATILE")
|
||||
|
||||
internal class VolatileFieldsLowering(val context: Context) : FileLoweringPass {
|
||||
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 functionDFGs: Map<DataFlowIR.FunctionSymbol, DataFlowIR.Function>)
|
||||
|
||||
internal object STATEMENT_ORIGIN_PRODUCER_INVOCATION : IrStatementOriginImpl("PRODUCER_INVOCATION")
|
||||
internal object STATEMENT_ORIGIN_JOB_INVOCATION : IrStatementOriginImpl("JOB_INVOCATION")
|
||||
internal val STATEMENT_ORIGIN_PRODUCER_INVOCATION = IrStatementOriginImpl("PRODUCER_INVOCATION")
|
||||
internal val STATEMENT_ORIGIN_JOB_INVOCATION = IrStatementOriginImpl("JOB_INVOCATION")
|
||||
|
||||
private fun IrTypeOperator.isCast() =
|
||||
this == IrTypeOperator.CAST || this == IrTypeOperator.IMPLICIT_CAST || this == IrTypeOperator.SAFE_CAST
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ internal class KonanForwardDeclarationModuleDeserializer(
|
||||
}
|
||||
|
||||
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>()
|
||||
|
||||
+7
-5
@@ -113,11 +113,13 @@ abstract class AbstractAtomicSymbols(
|
||||
annotations = emptyList()
|
||||
)
|
||||
|
||||
object ATOMICFU_GENERATED_CLASS : IrDeclarationOriginImpl("ATOMICFU_GENERATED_CLASS", isSynthetic = true)
|
||||
object ATOMICFU_GENERATED_FUNCTION : IrDeclarationOriginImpl("ATOMICFU_GENERATED_FUNCTION", isSynthetic = true)
|
||||
object ATOMICFU_GENERATED_FIELD : IrDeclarationOriginImpl("ATOMICFU_GENERATED_FIELD", isSynthetic = true)
|
||||
object ATOMICFU_GENERATED_PROPERTY : IrDeclarationOriginImpl("ATOMICFU_GENERATED_PROPERTY", isSynthetic = true)
|
||||
object ATOMICFU_GENERATED_PROPERTY_ACCESSOR : IrDeclarationOriginImpl("ATOMICFU_GENERATED_PROPERTY_ACCESSOR", isSynthetic = true)
|
||||
companion object {
|
||||
val ATOMICFU_GENERATED_CLASS by IrDeclarationOriginImpl.Synthetic
|
||||
val ATOMICFU_GENERATED_FUNCTION by IrDeclarationOriginImpl.Synthetic
|
||||
val ATOMICFU_GENERATED_FIELD by IrDeclarationOriginImpl.Synthetic
|
||||
val ATOMICFU_GENERATED_PROPERTY by IrDeclarationOriginImpl.Synthetic
|
||||
val ATOMICFU_GENERATED_PROPERTY_ACCESSOR by IrDeclarationOriginImpl.Synthetic
|
||||
}
|
||||
|
||||
protected fun createPackage(packageName: String): IrPackageFragment =
|
||||
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.bitMaskSlotCount
|
||||
|
||||
object SERIALIZATION_PLUGIN_ORIGIN : IrDeclarationOriginImpl("KOTLINX_SERIALIZATION", true)
|
||||
val SERIALIZATION_PLUGIN_ORIGIN = IrDeclarationOriginImpl("KOTLINX_SERIALIZATION", true)
|
||||
|
||||
internal typealias FunctionWithArgs = Pair<IrFunctionSymbol, List<IrExpression>>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user