From 9db69c0b0820437c9bfb2cc2e27cbc03951f61df Mon Sep 17 00:00:00 2001 From: "simon.ogorodnik" Date: Mon, 6 Apr 2020 23:33:13 +0300 Subject: [PATCH] [FIR2IR] Fix type arguments in generated this receiver --- .../kotlin/fir/backend/Fir2IrClassifierStorage.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt index dc2658332a8..a30cdf8f243 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt @@ -65,10 +65,10 @@ class Fir2IrClassifierStorage( } } - private fun IrClass.setThisReceiver() { + private fun IrClass.setThisReceiver(typeParameters: List) { 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 }