[FIR2IR] Add extension receiver parameter to delegated members

This commit is contained in:
Mikhail Glukhikh
2020-08-27 18:26:09 +03:00
parent 22c63c4e80
commit 02b6f34067
8 changed files with 25 additions and 15 deletions
@@ -10,10 +10,8 @@ import org.jetbrains.kotlin.backend.common.ir.isOverridable
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities as OldVisibilities
import org.jetbrains.kotlin.fir.Visibilities
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
import org.jetbrains.kotlin.fir.backend.FirMetadataSource
import org.jetbrains.kotlin.fir.backend.*
import org.jetbrains.kotlin.fir.backend.declareThisReceiverParameter
import org.jetbrains.kotlin.fir.backend.isOverriding
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.builder.buildProperty
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
@@ -233,6 +231,10 @@ internal class DelegatedMemberGenerator(
}
irTypeSubstitutor = IrTypeSubstitutor(substParameters, substArguments, irBuiltIns)
}
superFunction.extensionReceiverParameter?.let {
val substitutedType = if (addTypeSubstitution) irTypeSubstitutor.substitute(it.type) else it.type
extensionReceiverParameter = declareThisReceiverParameter(symbolTable, substitutedType, origin)
}
valueParameters = superFunction.valueParameters.map { valueParameter ->
val parameterDescriptor = WrappedValueParameterDescriptor()
val substedType = if (addTypeSubstitution) irTypeSubstitutor.substitute(valueParameter.type) else valueParameter.type