JVM IR: always generate inline class constructor with name 'constructor-impl'

Previously it was 'constructor-' + hash in case inline class property is
of inline class type.

No new tests added because this change fixes the constructor name in
`bytecodeListing/inlineClasses/inlineClassWithInlineClassUnderlyingType.kt`,
which is now failing due to other reasons.

 #KT-37041 Fixed
 #KT-37186
This commit is contained in:
Alexander Udalov
2019-09-18 12:41:00 +02:00
parent 688208aa56
commit d84a6fa742
@@ -54,6 +54,14 @@ object InlineClassAbi {
* to avoid clashes between overloaded methods.
*/
fun mangledNameFor(irFunction: IrFunction): Name {
if (irFunction is IrConstructor) {
// Note that we might drop this convention and use standard mangling for constructors too, see KT-37186.
assert(irFunction.constructedClass.isInline) {
"Should not mangle names of non-inline class constructors: ${irFunction.render()}"
}
return Name.identifier("constructor-impl")
}
val suffix = when {
irFunction.fullValueParameterList.any { it.type.requiresMangling } ->
hashSuffix(irFunction)
@@ -62,8 +70,6 @@ object InlineClassAbi {
}
val base = when {
irFunction is IrConstructor ->
"constructor"
irFunction.isGetter ->
JvmAbi.getterName(irFunction.propertyName.asString())
irFunction.isSetter ->