[IR] Avoid extra lists creation during getting explicit/all parameters (#3769)

This commit is contained in:
LepilkinaElena
2020-10-01 21:19:40 +03:00
committed by GitHub
parent 6d7744a921
commit dc2845df10
3 changed files with 29 additions and 9 deletions
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.builders.Scope
@@ -432,14 +431,20 @@ fun IrFunction.createDispatchReceiverParameter(origin: IrDeclarationOrigin? = nu
val IrFunction.allParameters: List<IrValueParameter>
get() = if (this is IrConstructor) {
listOf(
this.constructedClass.thisReceiver
?: error(this.render())
) + explicitParameters
ArrayList<IrValueParameter>(allParametersCount).also {
it.add(
this.constructedClass.thisReceiver
?: error(this.render())
)
addExplicitParametersTo(it)
}
} else {
explicitParameters
}
val IrFunction.allParametersCount: Int
get() = if (this is IrConstructor) explicitParametersCount + 1 else explicitParametersCount
private object FakeOverrideBuilder : FakeOverrideBuilderStrategy() {
override fun linkFakeOverride(fakeOverride: IrOverridableMember) {
when (fakeOverride) {