[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) symbolTable.enterScope(descriptor)
val typeArguments = this.typeParameters.map { val typeArguments = typeParameters.map {
IrSimpleTypeImpl(it.symbol, false, emptyList(), emptyList()) IrSimpleTypeImpl(getCachedIrTypeParameter(it.symbol.fir)!!.symbol, false, emptyList(), emptyList())
} }
thisReceiver = declareThisReceiverParameter( thisReceiver = declareThisReceiverParameter(
symbolTable, symbolTable,
@@ -153,7 +153,7 @@ class Fir2IrClassifierStorage(
fun processClassHeader(regularClass: FirRegularClass, irClass: IrClass = getCachedIrClass(regularClass)!!): IrClass { fun processClassHeader(regularClass: FirRegularClass, irClass: IrClass = getCachedIrClass(regularClass)!!): IrClass {
irClass.declareSupertypesAndTypeParameters(regularClass) irClass.declareSupertypesAndTypeParameters(regularClass)
irClass.setThisReceiver() irClass.setThisReceiver(regularClass.typeParameters)
return irClass return irClass
} }
@@ -225,7 +225,7 @@ class Fir2IrClassifierStorage(
).apply { ).apply {
metadata = MetadataSource.Class(descriptor) metadata = MetadataSource.Class(descriptor)
descriptor.bind(this) descriptor.bind(this)
setThisReceiver() setThisReceiver(anonymousObject.typeParameters)
if (irParent != null) { if (irParent != null) {
this.parent = irParent this.parent = irParent
} }