[FIR2IR] Fix type arguments in generated this receiver

This commit is contained in:
simon.ogorodnik
2020-04-06 23:33:13 +03:00
parent 861cc6ee20
commit 9db69c0b08
@@ -65,10 +65,10 @@ class Fir2IrClassifierStorage(
}
}
private fun IrClass.setThisReceiver() {
private fun IrClass.setThisReceiver(typeParameters: List<FirTypeParameterRef>) {
symbolTable.enterScope(descriptor)
val typeArguments = this.typeParameters.map {
IrSimpleTypeImpl(it.symbol, false, emptyList(), emptyList())
val typeArguments = typeParameters.map {
IrSimpleTypeImpl(getCachedIrTypeParameter(it.symbol.fir)!!.symbol, false, emptyList(), emptyList())
}
thisReceiver = declareThisReceiverParameter(
symbolTable,
@@ -153,7 +153,7 @@ class Fir2IrClassifierStorage(
fun processClassHeader(regularClass: FirRegularClass, irClass: IrClass = getCachedIrClass(regularClass)!!): IrClass {
irClass.declareSupertypesAndTypeParameters(regularClass)
irClass.setThisReceiver()
irClass.setThisReceiver(regularClass.typeParameters)
return irClass
}
@@ -225,7 +225,7 @@ class Fir2IrClassifierStorage(
).apply {
metadata = MetadataSource.Class(descriptor)
descriptor.bind(this)
setThisReceiver()
setThisReceiver(anonymousObject.typeParameters)
if (irParent != null) {
this.parent = irParent
}