[BE] Mangle context receiver params

This commit is contained in:
Anastasiya Shadrina
2021-08-09 00:24:27 +07:00
committed by TeamCityServer
parent bafd084094
commit 403ec7a5b1
5 changed files with 36 additions and 0 deletions
@@ -16181,6 +16181,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/localDeclaration.kt");
}
@Test
@TestMetadata("overload.kt")
public void testOverload() throws Exception {
runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/overload.kt");
}
@Test
@TestMetadata("plusAssign.kt")
public void testPlusAssign() throws Exception {
@@ -34,6 +34,7 @@ enum class MangleConstant(val prefix: Char, val separator: Char, val suffix: Cha
const val PLATFORM_FUNCTION_MARKER = '%'
const val CONTEXT_RECEIVER_PREFIX = '!'
const val EXTENSION_RECEIVER_PREFIX = '@'
const val FUNCTION_NAME_PREFIX = '#'
const val TYPE_PARAM_INDEX_PREFIX = '@'
@@ -115,6 +115,11 @@ abstract class DescriptorMangleComputer(protected val builder: StringBuilder, pr
builder.appendSignature(MangleConstant.STATIC_MEMBER_MARK)
}
contextReceiverParameters.forEach {
builder.appendSignature(MangleConstant.CONTEXT_RECEIVER_PREFIX)
mangleContextReceiverParameter(builder, it)
}
extensionReceiverParameter?.let {
builder.appendSignature(MangleConstant.EXTENSION_RECEIVER_PREFIX)
mangleExtensionReceiverParameter(builder, it)
@@ -139,6 +144,10 @@ abstract class DescriptorMangleComputer(protected val builder: StringBuilder, pr
}
}
private fun mangleContextReceiverParameter(vpBuilder: StringBuilder, param: ReceiverParameterDescriptor) {
mangleType(vpBuilder, param.type)
}
private fun mangleExtensionReceiverParameter(vpBuilder: StringBuilder, param: ReceiverParameterDescriptor) {
mangleType(vpBuilder, param.type)
}
@@ -0,0 +1,14 @@
// TARGET_BACKEND: JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR
context(String, Int)
fun overloaded(value: Any?) = "OK"
context(String)
fun overloaded(value: Any?) = "fail"
fun box() = with("42") {
with(42) {
overloaded(null)
}
}
@@ -16181,6 +16181,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/localDeclaration.kt");
}
@Test
@TestMetadata("overload.kt")
public void testOverload() throws Exception {
runTest("compiler/testData/codegen/box/extensionFunctions/contextReceivers/overload.kt");
}
@Test
@TestMetadata("plusAssign.kt")
public void testPlusAssign() throws Exception {