IR: Avoid recomputing Symbols::progressionElementTypes

This commit is contained in:
Denis.Zharkov
2021-02-24 15:15:19 +03:00
parent d9a9bd0136
commit f141c276be
2 changed files with 5 additions and 6 deletions
@@ -23,11 +23,11 @@ import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.types.IrSimpleType
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.classOrNull
import org.jetbrains.kotlin.ir.types.defaultType
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.calls.components.isVararg
import org.jetbrains.kotlin.util.OperatorNameConventions
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
// This is what Context collects about IR.
@@ -164,6 +164,10 @@ open class BuiltinSymbolsBase(protected val irBuiltIns: IrBuiltIns, protected va
val integerClasses = listOf(byte, short, int, long)
val progressionElementTypes: Collection<IrType> by lazy {
listOfNotNull(byte, short, int, long, char, uByte, uShort, uInt, uLong).map { it.defaultType }
}
val arrayOf = getSimpleFunction(Name.identifier("arrayOf")) {
it.extensionReceiverParameter == null && it.dispatchReceiverParameter == null && it.valueParameters.size == 1 &&
it.valueParameters[0].isVararg
@@ -17,8 +17,6 @@ import org.jetbrains.kotlin.ir.declarations.IrVariable
import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.defaultType
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
@@ -350,6 +348,3 @@ internal class NestedHeaderInfoBuilderForWithIndex(context: CommonBackendContext
DefaultSequenceHandler(context),
)
}
internal val Symbols<*>.progressionElementTypes: Collection<IrType>
get() = listOfNotNull(byte, short, int, long, char, uByte, uShort, uInt, uLong).map { it.defaultType }