[IR] Support hidden parameters in IrMangler

- make them be skipped in signature
This commit is contained in:
Roman Artemev
2020-09-09 16:41:15 +03:00
parent 8209b70a2f
commit b84084d54e
2 changed files with 22 additions and 8 deletions
@@ -5,9 +5,7 @@
package org.jetbrains.kotlin.backend.common.serialization.mangle.ir
import org.jetbrains.kotlin.backend.common.serialization.mangle.KotlinMangleComputer
import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleConstant
import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleMode
import org.jetbrains.kotlin.backend.common.serialization.mangle.*
import org.jetbrains.kotlin.backend.common.serialization.mangle.collectForMangler
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.*
@@ -106,14 +104,19 @@ abstract class IrMangleComputer(protected val builder: StringBuilder, private va
}
extensionReceiverParameter?.let {
builder.appendSignature(MangleConstant.EXTENSION_RECEIVER_PREFIX)
mangleValueParameter(builder, it)
if (!it.isHidden) {
builder.appendSignature(MangleConstant.EXTENSION_RECEIVER_PREFIX)
mangleValueParameter(builder, it)
}
}
valueParameters.collectForMangler(builder, MangleConstant.VALUE_PARAMETERS) {
appendSignature(specialValueParamPrefix(it))
mangleValueParameter(this, it)
if (!it.isHidden) {
appendSignature(specialValueParamPrefix(it))
mangleValueParameter(this, it)
}
}
typeParameters.collectForMangler(builder, MangleConstant.TYPE_PARAMETERS) { mangleTypeParameter(this, it) }
if (!isCtor && !returnType.isUnit() && addReturnType()) {
@@ -12,14 +12,25 @@ fun <T> Collection<T>.collectForMangler(builder: StringBuilder, params: MangleCo
builder.append(params.prefix)
var addSeparator = true
for (e in this) {
if (first) {
first = false
} else {
} else if (addSeparator) {
builder.append(params.separator)
}
val l = builder.length
builder.collect(e)
addSeparator = l < builder.length
}
if (!addSeparator) {
if (builder.last() == params.separator) {
// avoid signatures like foo(Int;)
builder.deleteCharAt(builder.lastIndex)
}
}
builder.append(params.suffix)