[IR] Support hidden parameters in IrMangler
- make them be skipped in signature
This commit is contained in:
+10
-7
@@ -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
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user