[K/JS] Use only single variant of default arguments function wrapper for exported and not-exported functions

This commit is contained in:
Artem Kobzar
2022-09-19 17:49:04 +00:00
committed by Space
parent ea7ce55082
commit 73e7053c35
59 changed files with 1109 additions and 597 deletions
@@ -149,8 +149,8 @@ fun IrBuilderWithScope.irSet(variable: IrValueSymbol, value: IrExpression, origi
fun IrBuilderWithScope.irSet(variable: IrValueDeclaration, value: IrExpression, origin: IrStatementOrigin = IrStatementOrigin.EQ) =
irSet(variable.symbol, value, origin)
fun IrBuilderWithScope.irGetField(receiver: IrExpression?, field: IrField) =
IrGetFieldImpl(startOffset, endOffset, field.symbol, field.type, receiver)
fun IrBuilderWithScope.irGetField(receiver: IrExpression?, field: IrField, type: IrType = field.type) =
IrGetFieldImpl(startOffset, endOffset, field.symbol, type, receiver)
fun IrBuilderWithScope.irSetField(receiver: IrExpression?, field: IrField, value: IrExpression, origin: IrStatementOrigin? = null) =
IrSetFieldImpl(startOffset, endOffset, field.symbol, receiver, value, context.irBuiltIns.unitType, origin = origin)
@@ -161,6 +161,17 @@ fun IrBuilderWithScope.irGetObjectValue(type: IrType, classSymbol: IrClassSymbol
fun IrBuilderWithScope.irEqeqeq(arg1: IrExpression, arg2: IrExpression) =
context.eqeqeq(startOffset, endOffset, arg1, arg2)
fun IrBuilderWithScope.irEqeqeqWithoutBox(arg1: IrExpression, arg2: IrExpression) =
primitiveOp2(
startOffset,
endOffset,
context.irBuiltIns.eqeqeqSymbol,
context.irBuiltIns.booleanType,
IrStatementOrigin.SYNTHETIC_NOT_AUTOBOXED_CHECK,
arg1,
arg2
)
fun IrBuilderWithScope.irNull() =
irNull(context.irBuiltIns.nothingNType)
@@ -54,6 +54,10 @@ abstract class IrStatementsBuilder<out T : IrElement>(
addStatement(this)
}
operator fun List<IrStatement>.unaryPlus() {
forEach(::addStatement)
}
protected abstract fun addStatement(irStatement: IrStatement)
abstract fun doBuild(): T
}
@@ -5,6 +5,8 @@
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
abstract class IrStatementOriginImpl(val debugName: String) : IrStatementOrigin {
override fun toString(): String = debugName
}
@@ -90,6 +92,8 @@ interface IrStatementOrigin {
object BRIDGE_DELEGATION : IrStatementOriginImpl("BRIDGE_DELEGATION")
object SYNTHETIC_NOT_AUTOBOXED_CHECK : IrStatementOriginImpl("SYNTHETIC_NOT_AUTOBOXED_CHECK")
data class COMPONENT_N private constructor(val index: Int) : IrStatementOriginImpl("COMPONENT_$index") {
companion object {
private val precreatedComponents = Array(32) { i -> COMPONENT_N(i + 1) }