[JS IR] Fixed bug with constructors type parameters
This commit is contained in:
+3
-2
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
|||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
|
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
|
||||||
import org.jetbrains.kotlin.ir.util.defaultType
|
import org.jetbrains.kotlin.ir.util.defaultType
|
||||||
|
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||||
import org.jetbrains.kotlin.ir.util.transformDeclarationsFlat
|
import org.jetbrains.kotlin.ir.util.transformDeclarationsFlat
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||||
@@ -160,7 +161,7 @@ class SecondaryCtorLowering(val context: JsIrBackendContext) {
|
|||||||
val retStmt = JsIrBuilder.buildReturn(it.symbol, JsIrBuilder.buildGetValue(thisParam.symbol), context.irBuiltIns.nothingType)
|
val retStmt = JsIrBuilder.buildReturn(it.symbol, JsIrBuilder.buildGetValue(thisParam.symbol), context.irBuiltIns.nothingType)
|
||||||
val statements = (declaration.body!!.deepCopyWithSymbols(it) as IrStatementContainer).statements
|
val statements = (declaration.body!!.deepCopyWithSymbols(it) as IrStatementContainer).statements
|
||||||
|
|
||||||
it.copyTypeParametersFrom(declaration)
|
it.copyTypeParametersFrom(declaration.parentAsClass)
|
||||||
|
|
||||||
val newValueParameters = declaration.valueParameters.map { p -> p.copyTo(it) }
|
val newValueParameters = declaration.valueParameters.map { p -> p.copyTo(it) }
|
||||||
it.valueParameters += (newValueParameters + thisParam)
|
it.valueParameters += (newValueParameters + thisParam)
|
||||||
@@ -192,7 +193,7 @@ class SecondaryCtorLowering(val context: JsIrBackendContext) {
|
|||||||
declaration.isInline,
|
declaration.isInline,
|
||||||
declaration.isExternal
|
declaration.isExternal
|
||||||
).also {
|
).also {
|
||||||
it.copyTypeParametersFrom(declaration)
|
it.copyTypeParametersFrom(declaration.parentAsClass)
|
||||||
it.valueParameters += declaration.valueParameters.map { p -> p.copyTo(it) }
|
it.valueParameters += declaration.valueParameters.map { p -> p.copyTo(it) }
|
||||||
|
|
||||||
val createFunctionIntrinsic = context.intrinsics.jsObjectCreate
|
val createFunctionIntrinsic = context.intrinsics.jsObjectCreate
|
||||||
|
|||||||
Reference in New Issue
Block a user