[BE] Mangle context receiver params
This commit is contained in:
committed by
TeamCityServer
parent
bafd084094
commit
403ec7a5b1
+6
@@ -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 {
|
||||
|
||||
+1
@@ -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 = '@'
|
||||
|
||||
+9
@@ -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)
|
||||
}
|
||||
|
||||
+14
@@ -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)
|
||||
}
|
||||
}
|
||||
+6
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user