[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
|
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.*
|
||||||
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.collectForMangler
|
import org.jetbrains.kotlin.backend.common.serialization.mangle.collectForMangler
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
@@ -106,14 +104,19 @@ abstract class IrMangleComputer(protected val builder: StringBuilder, private va
|
|||||||
}
|
}
|
||||||
|
|
||||||
extensionReceiverParameter?.let {
|
extensionReceiverParameter?.let {
|
||||||
builder.appendSignature(MangleConstant.EXTENSION_RECEIVER_PREFIX)
|
if (!it.isHidden) {
|
||||||
mangleValueParameter(builder, it)
|
builder.appendSignature(MangleConstant.EXTENSION_RECEIVER_PREFIX)
|
||||||
|
mangleValueParameter(builder, it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
valueParameters.collectForMangler(builder, MangleConstant.VALUE_PARAMETERS) {
|
valueParameters.collectForMangler(builder, MangleConstant.VALUE_PARAMETERS) {
|
||||||
appendSignature(specialValueParamPrefix(it))
|
if (!it.isHidden) {
|
||||||
mangleValueParameter(this, it)
|
appendSignature(specialValueParamPrefix(it))
|
||||||
|
mangleValueParameter(this, it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
typeParameters.collectForMangler(builder, MangleConstant.TYPE_PARAMETERS) { mangleTypeParameter(this, it) }
|
typeParameters.collectForMangler(builder, MangleConstant.TYPE_PARAMETERS) { mangleTypeParameter(this, it) }
|
||||||
|
|
||||||
if (!isCtor && !returnType.isUnit() && addReturnType()) {
|
if (!isCtor && !returnType.isUnit() && addReturnType()) {
|
||||||
|
|||||||
+12
-1
@@ -12,14 +12,25 @@ fun <T> Collection<T>.collectForMangler(builder: StringBuilder, params: MangleCo
|
|||||||
|
|
||||||
builder.append(params.prefix)
|
builder.append(params.prefix)
|
||||||
|
|
||||||
|
var addSeparator = true
|
||||||
|
|
||||||
for (e in this) {
|
for (e in this) {
|
||||||
if (first) {
|
if (first) {
|
||||||
first = false
|
first = false
|
||||||
} else {
|
} else if (addSeparator) {
|
||||||
builder.append(params.separator)
|
builder.append(params.separator)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val l = builder.length
|
||||||
builder.collect(e)
|
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)
|
builder.append(params.suffix)
|
||||||
|
|||||||
Reference in New Issue
Block a user