[FIR2IR] Fix type arguments in generated this receiver
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user