Native: fix filecheck_signext_zeroext_objc_export and enable it back

Previously filecheck_signext_zeroext_objc_export test was disabled
after making one-stage compilation mode implemented through two-stage
mode (KT-59245).

That change made the compiler sort the methods, and filecheck patterns
didn't match that order after that.

This commit fixes the test by adding sorted prefixes to method names,
so sorting alphabetically them doesn't really change the order.
This commit is contained in:
Svyatoslav Scherbina
2023-09-06 17:43:55 +02:00
committed by Space Team
parent f77f83e741
commit 0cd91d9286
2 changed files with 28 additions and 26 deletions
@@ -6176,8 +6176,7 @@ fileCheckTest("filecheck_signext_zeroext_interop") {
fileCheckTest("filecheck_signext_zeroext_objc_export") {
annotatedSource = project.file('filecheck/signext_zeroext_objc_export.kt')
generateFramework = true
// enabled = target.family.appleFamily
enabled = false // KT-58863
enabled = target.family.appleFamily
}
fileCheckTest("filecheck_function_attributes_at_callsite") {
@@ -6,52 +6,55 @@
//
// Here we check generated ObjC bridges, not original declarations.
//
// f$n function name prefixes help the compiler keep the function order
// whenever it decides to sort the functions alphabetically.
//
// CHECK-LABEL: zeroext i16 @"objc2kotlin_kfun:#heyIJustMetYou(kotlin.Char){}kotlin.Char"(i8* %0, i8* %1, i16 zeroext %2)
fun heyIJustMetYou(arg: Char): Char {
// CHECK: invoke zeroext i16 @"kfun:#heyIJustMetYou(kotlin.Char){}kotlin.Char"(i16 zeroext %2)
// CHECK-LABEL: zeroext i16 @"objc2kotlin_kfun:#f0HeyIJustMetYou(kotlin.Char){}kotlin.Char"(i8* %0, i8* %1, i16 zeroext %2)
fun f0HeyIJustMetYou(arg: Char): Char {
// CHECK: invoke zeroext i16 @"kfun:#f0HeyIJustMetYou(kotlin.Char){}kotlin.Char"(i16 zeroext %2)
return arg
}
// CHECK-LABEL: signext i8 @"objc2kotlin_kfun:#andThisIsCrazy(kotlin.Byte){}kotlin.Byte"(i8* %0, i8* %1, i8 signext %2)
fun andThisIsCrazy(arg: Byte): Byte {
// CHECK: invoke signext i8 @"kfun:#andThisIsCrazy(kotlin.Byte){}kotlin.Byte"(i8 signext %2)
// CHECK-LABEL: signext i8 @"objc2kotlin_kfun:#f1AndThisIsCrazy(kotlin.Byte){}kotlin.Byte"(i8* %0, i8* %1, i8 signext %2)
fun f1AndThisIsCrazy(arg: Byte): Byte {
// CHECK: invoke signext i8 @"kfun:#f1AndThisIsCrazy(kotlin.Byte){}kotlin.Byte"(i8 signext %2)
return arg
}
// CHECK-LABEL: signext i16 @"objc2kotlin_kfun:#butHereIsMyNumber(kotlin.Short){}kotlin.Short"(i8* %0, i8* %1, i16 signext %2)
fun butHereIsMyNumber(arg: Short): Short {
// CHECK: invoke signext i16 @"kfun:#butHereIsMyNumber(kotlin.Short){}kotlin.Short"(i16 signext %2)
// CHECK-LABEL: signext i16 @"objc2kotlin_kfun:#f2ButHereIsMyNumber(kotlin.Short){}kotlin.Short"(i8* %0, i8* %1, i16 signext %2)
fun f2ButHereIsMyNumber(arg: Short): Short {
// CHECK: invoke signext i16 @"kfun:#f2ButHereIsMyNumber(kotlin.Short){}kotlin.Short"(i16 signext %2)
return arg
}
// CHECK-LABEL: signext i8 @"objc2kotlin_kfun:#soCallMeMaybe(kotlin.Boolean){}kotlin.Boolean"(i8* %0, i8* %1, i8 signext %2)
fun soCallMeMaybe(arg: Boolean): Boolean {
//CHECK: invoke zeroext i1 @"kfun:#soCallMeMaybe(kotlin.Boolean){}kotlin.Boolean"(i1 zeroext {{.*}})
// CHECK-LABEL: signext i8 @"objc2kotlin_kfun:#f3SoCallMeMaybe(kotlin.Boolean){}kotlin.Boolean"(i8* %0, i8* %1, i8 signext %2)
fun f3SoCallMeMaybe(arg: Boolean): Boolean {
//CHECK: invoke zeroext i1 @"kfun:#f3SoCallMeMaybe(kotlin.Boolean){}kotlin.Boolean"(i1 zeroext {{.*}})
return arg
}
// CHECK-LABEL: zeroext i8 @"objc2kotlin_kfun:#itsHardToLook(kotlin.UByte){}kotlin.UByte"(i8* %0, i8* %1, i8 zeroext %2)
fun itsHardToLook(arg: UByte): UByte {
// CHECK: invoke zeroext i8 @"kfun:#itsHardToLook(kotlin.UByte){}kotlin.UByte"(i8 zeroext %2)
// CHECK-LABEL: zeroext i8 @"objc2kotlin_kfun:#f4ItsHardToLook(kotlin.UByte){}kotlin.UByte"(i8* %0, i8* %1, i8 zeroext %2)
fun f4ItsHardToLook(arg: UByte): UByte {
// CHECK: invoke zeroext i8 @"kfun:#f4ItsHardToLook(kotlin.UByte){}kotlin.UByte"(i8 zeroext %2)
return arg
}
// CHECK-LABEL: zeroext i16 @"objc2kotlin_kfun:#rightAtYouBaby(kotlin.UShort){}kotlin.UShort"(i8* %0, i8* %1, i16 zeroext %2)
fun rightAtYouBaby(arg: UShort): UShort {
// CHECK: invoke zeroext i16 @"kfun:#rightAtYouBaby(kotlin.UShort){}kotlin.UShort"(i16 zeroext %2)
// CHECK-LABEL: zeroext i16 @"objc2kotlin_kfun:#f5RightAtYouBaby(kotlin.UShort){}kotlin.UShort"(i8* %0, i8* %1, i16 zeroext %2)
fun f5RightAtYouBaby(arg: UShort): UShort {
// CHECK: invoke zeroext i16 @"kfun:#f5RightAtYouBaby(kotlin.UShort){}kotlin.UShort"(i16 zeroext %2)
return arg
}
// CHECK-LABEL: float @"objc2kotlin_kfun:#butHereIsMyNumber1(kotlin.Float){}kotlin.Float"(i8* %0, i8* %1, float %2)
fun butHereIsMyNumber1(arg: Float): Float {
// CHECK: invoke float @"kfun:#butHereIsMyNumber1(kotlin.Float){}kotlin.Float"(float %2)
// CHECK-LABEL: float @"objc2kotlin_kfun:#f6ButHereIsMyNumber1(kotlin.Float){}kotlin.Float"(i8* %0, i8* %1, float %2)
fun f6ButHereIsMyNumber1(arg: Float): Float {
// CHECK: invoke float @"kfun:#f6ButHereIsMyNumber1(kotlin.Float){}kotlin.Float"(float %2)
return arg
}
// CHECK-LABEL: i8* @"objc2kotlin_kfun:#soCallMeMaybe1(kotlin.Any?){}kotlin.Any?"(i8* %0, i8* %1, i8* %2)
fun soCallMeMaybe1(arg: Any?): Any? {
// CHECK: invoke %struct.ObjHeader* @"kfun:#soCallMeMaybe1(kotlin.Any?){}kotlin.Any?"(%struct.ObjHeader* {{.*}}, %struct.ObjHeader** {{.*}})
// CHECK-LABEL: i8* @"objc2kotlin_kfun:#f7SoCallMeMaybe1(kotlin.Any?){}kotlin.Any?"(i8* %0, i8* %1, i8* %2)
fun f7SoCallMeMaybe1(arg: Any?): Any? {
// CHECK: invoke %struct.ObjHeader* @"kfun:#f7SoCallMeMaybe1(kotlin.Any?){}kotlin.Any?"(%struct.ObjHeader* {{.*}}, %struct.ObjHeader** {{.*}})
return arg
}