diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/Ir.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/Ir.kt index c46b62373f1..38a42a7c8dc 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/Ir.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/Ir.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.name.Name // This is what Context collects about IR. abstract class Ir(val context: T, val irModule: IrModuleFragment) { - abstract val symbols: Symbols + abstract val symbols: Symbols val defaultParameterDeclarationsCache = mutableMapOf() @@ -200,8 +200,8 @@ open class BuiltinSymbolsBase(val irBuiltIns: IrBuiltIns, private val symbolTabl // Some symbols below are used in kotlin-native, so they can't be private @Suppress("MemberVisibilityCanBePrivate", "PropertyName") -abstract class Symbols( - val context: T, irBuiltIns: IrBuiltIns, symbolTable: ReferenceSymbolTable +abstract class Symbols( + irBuiltIns: IrBuiltIns, symbolTable: ReferenceSymbolTable ) : BuiltinSymbolsBase(irBuiltIns, symbolTable) { abstract val throwNullPointerException: IrSimpleFunctionSymbol diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/RangeContainsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/RangeContainsLowering.kt index a0d04687e03..0b91dceabcf 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/RangeContainsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/RangeContainsLowering.kt @@ -355,7 +355,7 @@ private class Transformer( } private fun computeComparisonClass( - symbols: Symbols, + symbols: Symbols, lowerType: IrType, upperType: IrType, argumentType: IrType @@ -364,7 +364,7 @@ private class Transformer( return leastCommonPrimitiveNumericType(symbols, argumentType, commonBoundType)?.getClass() } - private fun leastCommonPrimitiveNumericType(symbols: Symbols, t1: IrType, t2: IrType): IrType? { + private fun leastCommonPrimitiveNumericType(symbols: Symbols, t1: IrType, t2: IrType): IrType? { val primitive1 = t1.getPrimitiveType() val primitive2 = t2.getPrimitiveType() val unsigned1 = t1.getUnsignedType() diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/HeaderInfo.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/HeaderInfo.kt index f934c9ad173..0ff3e3c7ba2 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/HeaderInfo.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/HeaderInfo.kt @@ -189,7 +189,7 @@ class ProgressionHeaderInfo( * The internal induction variable used is an Int. */ class IndexedGetHeaderInfo( - symbols: Symbols, + symbols: Symbols, first: IrExpression, last: IrExpression, step: IrExpression, diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionType.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionType.kt index 4ec6fc6c272..a2ec5618a82 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionType.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionType.kt @@ -7,16 +7,13 @@ package org.jetbrains.kotlin.backend.common.lower.loops -import org.jetbrains.kotlin.backend.common.CommonBackendContext import org.jetbrains.kotlin.backend.common.ir.Symbols import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder -import org.jetbrains.kotlin.ir.builders.irChar import org.jetbrains.kotlin.ir.builders.irInt import org.jetbrains.kotlin.ir.builders.irLong import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl -import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.defaultType @@ -38,7 +35,7 @@ sealed class ProgressionType( fun IrExpression.asStepType() = castIfNecessary(stepClass) companion object { - fun fromIrType(irType: IrType, symbols: Symbols, allowUnsignedBounds: Boolean): ProgressionType? = + fun fromIrType(irType: IrType, symbols: Symbols, allowUnsignedBounds: Boolean): ProgressionType? = when { irType.isSubtypeOfClass(symbols.charProgression) -> CharProgressionType(symbols) irType.isSubtypeOfClass(symbols.intProgression) -> IntProgressionType(symbols) @@ -52,7 +49,7 @@ sealed class ProgressionType( } } -internal class IntProgressionType(symbols: Symbols) : +internal class IntProgressionType(symbols: Symbols) : ProgressionType( elementClass = symbols.int.owner, stepClass = symbols.int.owner, @@ -65,7 +62,7 @@ internal class IntProgressionType(symbols: Symbols) : override fun DeclarationIrBuilder.zeroStepExpression() = irInt(0) } -internal class LongProgressionType(symbols: Symbols) : +internal class LongProgressionType(symbols: Symbols) : ProgressionType( elementClass = symbols.long.owner, stepClass = symbols.long.owner, @@ -78,7 +75,7 @@ internal class LongProgressionType(symbols: Symbols) : override fun DeclarationIrBuilder.zeroStepExpression() = irLong(0) } -internal class CharProgressionType(symbols: Symbols) : +internal class CharProgressionType(symbols: Symbols) : ProgressionType( elementClass = symbols.char.owner, stepClass = symbols.int.owner, @@ -107,7 +104,7 @@ internal class CharProgressionType(symbols: Symbols) : // `to(U)Int/(U)Long()` functions otherwise. internal abstract class UnsignedProgressionType( - symbols: Symbols, + symbols: Symbols, elementClass: IrClass, stepClass: IrClass, minValueAsLong: Long, @@ -170,7 +167,7 @@ internal abstract class UnsignedProgressionType( } } -internal class UIntProgressionType(symbols: Symbols, allowUnsignedBounds: Boolean) : +internal class UIntProgressionType(symbols: Symbols, allowUnsignedBounds: Boolean) : UnsignedProgressionType( symbols, elementClass = if (allowUnsignedBounds) symbols.uInt!!.owner else symbols.int.owner, @@ -186,7 +183,7 @@ internal class UIntProgressionType(symbols: Symbols, allow override fun DeclarationIrBuilder.zeroStepExpression() = irInt(0) } -internal class ULongProgressionType(symbols: Symbols, allowUnsignedBounds: Boolean) : +internal class ULongProgressionType(symbols: Symbols, allowUnsignedBounds: Boolean) : UnsignedProgressionType( symbols, elementClass = if (allowUnsignedBounds) symbols.uLong!!.owner else symbols.long.owner, diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt index 19b6e4b9c39..6ca37550a41 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt @@ -199,7 +199,9 @@ class JsIrBackendContext( .let { symbolTable.referenceSimpleFunction(it!!) } override val ir = object : Ir(this, irModuleFragment) { - override val symbols = object : Symbols(this@JsIrBackendContext, irBuiltIns, symbolTable) { + override val symbols = object : Symbols(irBuiltIns, symbolTable) { + private val context = this@JsIrBackendContext + override val throwNullPointerException = symbolTable.referenceSimpleFunction(getFunctions(kotlinPackageFqn.child(Name.identifier("THROW_NPE"))).single()) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt index 38c911d4e88..6582fae6b1d 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt @@ -42,9 +42,9 @@ import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.types.Variance class JvmSymbols( - context: JvmBackendContext, + private val context: JvmBackendContext, symbolTable: SymbolTable -) : Symbols(context, context.irBuiltIns, symbolTable) { +) : Symbols(context.irBuiltIns, symbolTable) { private val storageManager = LockBasedStorageManager(this::class.java.simpleName) private val irFactory = context.irFactory diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt index 168166120a2..c72527c5837 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt @@ -112,7 +112,7 @@ class WasmBackendContext( PropertyLazyInitialization(enabled = propertyLazyInitialization, eagerInitialization = wasmSymbols.eagerInitialization) override val ir = object : Ir(this, irModuleFragment) { - override val symbols: Symbols = wasmSymbols + override val symbols: Symbols = wasmSymbols override fun shouldGenerateHandlerParameterForDefaultBodyFun() = true } diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmSymbols.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmSymbols.kt index b6e9868ae30..d912c60a38d 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmSymbols.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmSymbols.kt @@ -32,9 +32,9 @@ import java.lang.IllegalArgumentException @OptIn(ObsoleteDescriptorBasedAPI::class) class WasmSymbols( - context: WasmBackendContext, + private val context: WasmBackendContext, private val symbolTable: SymbolTable -) : Symbols(context, context.irBuiltIns, symbolTable) { +) : Symbols(context.irBuiltIns, symbolTable) { private val kotlinTopLevelPackage: PackageViewDescriptor = context.module.getPackage(FqName("kotlin")) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt index 9bc90153616..f54ff2c35b9 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt @@ -18,11 +18,12 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.symbols.IrClassSymbol -import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.defaultType import org.jetbrains.kotlin.ir.types.typeWith -import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable +import org.jetbrains.kotlin.ir.util.SymbolTable +import org.jetbrains.kotlin.ir.util.constructors import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi2ir.descriptors.IrBuiltInsOverDescriptors @@ -39,12 +40,12 @@ internal class KonanIr(context: Context, irModule: IrModuleFragment): Ir(context, irBuiltIns, symbolTable) { +): Symbols(irBuiltIns, symbolTable) { val entryPoint = findMainEntryPoint(context)?.let { symbolTable.referenceSimpleFunction(it) }