Don't copy default value parameters for fake overrides

This commit is contained in:
Alexander Gorshenev
2020-07-28 21:46:55 +03:00
parent 2cfd776092
commit 9a717e9ecf
9 changed files with 74 additions and 5 deletions
@@ -5,14 +5,11 @@
package org.jetbrains.kotlin.backend.common.overrides
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrProperty
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.util.*
class FakeOverrideCopier(
symbolRemapper: SymbolRemapper,
private val symbolRemapper: SymbolRemapper,
private val typeRemapper: TypeRemapper,
private val symbolRenamer: SymbolRenamer
) : DeepCopyIrTreeWithSymbols(symbolRemapper, typeRemapper, symbolRenamer) {
@@ -87,4 +84,20 @@ class FakeOverrideCopier(
this.getter = declaration.getter?.transform()
this.setter = declaration.setter?.transform()
}
override fun visitValueParameter(declaration: IrValueParameter): IrValueParameter =
declaration.factory.createValueParameter(
declaration.startOffset, declaration.endOffset,
mapDeclarationOrigin(declaration.origin),
symbolRemapper.getDeclaredValueParameter(declaration.symbol),
symbolRenamer.getValueParameterName(declaration.symbol),
declaration.index,
declaration.type.remapType(),
declaration.varargElementType?.remapType(),
declaration.isCrossinline,
declaration.isNoinline
).apply {
transformAnnotations(declaration)
// Don't set the default value for fake overrides.
}
}