[JS IR] Fixed bug with constructors type parameters

This commit is contained in:
Igor Chevdar
2019-01-09 18:29:05 +03:00
parent 5afa44edea
commit 1bef26c80e
@@ -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