IC mangling: Use old mangling scheme when LV is 1.3
Add integration test to check, that nothing is broken with LV 1.3.
This commit is contained in:
+1
-3
@@ -241,9 +241,7 @@ class JvmSerializerExtension @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
private fun MutableVersionRequirementTable.writeNewFunctionNameManglingRequirement(add: (Int) -> Unit) {
|
||||
if (languageVersionSettings.languageVersion.major == 1 && languageVersionSettings.languageVersion.minor >= 4) {
|
||||
add(writeVersionRequirement(1, 4, 30, ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION, this))
|
||||
}
|
||||
add(writeVersionRequirement(1, 4, 30, ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION, this))
|
||||
}
|
||||
|
||||
private fun FunctionDescriptor.needsInlineParameterNullCheckRequirement(): Boolean =
|
||||
|
||||
@@ -196,7 +196,8 @@ class GenerationState private constructor(
|
||||
val languageVersionSettings = configuration.languageVersionSettings
|
||||
|
||||
val useOldManglingSchemeForFunctionsWithInlineClassesInSignatures =
|
||||
configuration.getBoolean(JVMConfigurationKeys.USE_OLD_INLINE_CLASSES_MANGLING_SCHEME)
|
||||
configuration.getBoolean(JVMConfigurationKeys.USE_OLD_INLINE_CLASSES_MANGLING_SCHEME) ||
|
||||
languageVersionSettings.languageVersion.run { major == 1 && minor < 4 }
|
||||
|
||||
val target = configuration.get(JVMConfigurationKeys.JVM_TARGET) ?: JvmTarget.DEFAULT
|
||||
val runtimeStringConcat =
|
||||
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/inlineClassesManglingAgainstLV13/library/lib.kt
Vendored
+202
@@ -0,0 +1,202 @@
|
||||
inline class ICString(val a: String)
|
||||
inline class ICStringNullable(val a: String?)
|
||||
inline class ICAny(val a: Any)
|
||||
inline class ICAnyNullable(val a: Any?)
|
||||
inline class ICInt(val a: Int)
|
||||
inline class ICIntNullable(val a: Int?)
|
||||
|
||||
fun ordinaryNoninlineReturnsICString(): ICString = ICString("")
|
||||
fun ordinaryNoninlineReturnsICStringNullable(): ICStringNullable = ICStringNullable("")
|
||||
fun ordinaryNoninlineReturnsICAny(): ICAny = ICAny("")
|
||||
fun ordinaryNoninlineReturnsICAnyNullable(): ICAnyNullable = ICAnyNullable("")
|
||||
fun ordinaryNoninlineReturnsICInt(): ICInt = ICInt(0)
|
||||
fun ordinaryNoninlineReturnsICIntNullable(): ICIntNullable = ICIntNullable(0)
|
||||
fun ordinaryNoninlineReturnsICString_Null(): ICString? = null
|
||||
fun ordinaryNoninlineReturnsICStringNullable_Null(): ICStringNullable? = null
|
||||
fun ordinaryNoninlineReturnsICAny_Null(): ICAny? = null
|
||||
fun ordinaryNoninlineReturnsICAnyNullable_Null(): ICAnyNullable? = null
|
||||
fun ordinaryNoninlineReturnsICInt_Null(): ICInt? = null
|
||||
fun ordinaryNoninlineReturnsICIntNullable_Null(): ICIntNullable? = null
|
||||
fun ordinaryNoninlineAcceptsICString(i: Int, ic: ICString) {}
|
||||
fun ordinaryNoninlineAcceptsICStringNullable(i: Int, ic: ICStringNullable) {}
|
||||
fun ordinaryNoninlineAcceptsICAny(i: Int, ic: ICAny) {}
|
||||
fun ordinaryNoninlineAcceptsICAnyNullable(i: Int, ic: ICAnyNullable) {}
|
||||
fun ordinaryNoninlineAcceptsICInt(i: Int, ic: ICInt) {}
|
||||
fun ordinaryNoninlineAcceptsICIntNullable(i: Int, ic: ICIntNullable) {}
|
||||
fun ordinaryNoninlineAcceptsICString_Null(i: Int, ic: ICString?) {}
|
||||
fun ordinaryNoninlineAcceptsICStringNullable_Null(i: Int, ic: ICStringNullable?) {}
|
||||
fun ordinaryNoninlineAcceptsICAny_Null(i: Int, ic: ICAny?) {}
|
||||
fun ordinaryNoninlineAcceptsICAnyNullable_Null(i: Int, ic: ICAnyNullable?) {}
|
||||
fun ordinaryNoninlineAcceptsICInt_Null(i: Int, ic: ICInt?) {}
|
||||
fun ordinaryNoninlineAcceptsICIntNullable_Null(i: Int, ic: ICIntNullable?) {}
|
||||
inline fun ordinaryInlineReturnsICString(): ICString = ICString("")
|
||||
inline fun ordinaryInlineReturnsICStringNullable(): ICStringNullable = ICStringNullable("")
|
||||
inline fun ordinaryInlineReturnsICAny(): ICAny = ICAny("")
|
||||
inline fun ordinaryInlineReturnsICAnyNullable(): ICAnyNullable = ICAnyNullable("")
|
||||
inline fun ordinaryInlineReturnsICInt(): ICInt = ICInt(0)
|
||||
inline fun ordinaryInlineReturnsICIntNullable(): ICIntNullable = ICIntNullable(0)
|
||||
inline fun ordinaryInlineReturnsICString_Null(): ICString? = null
|
||||
inline fun ordinaryInlineReturnsICStringNullable_Null(): ICStringNullable? = null
|
||||
inline fun ordinaryInlineReturnsICAny_Null(): ICAny? = null
|
||||
inline fun ordinaryInlineReturnsICAnyNullable_Null(): ICAnyNullable? = null
|
||||
inline fun ordinaryInlineReturnsICInt_Null(): ICInt? = null
|
||||
inline fun ordinaryInlineReturnsICIntNullable_Null(): ICIntNullable? = null
|
||||
inline fun ordinaryInlineAcceptsICString(i: Int, ic: ICString) {}
|
||||
inline fun ordinaryInlineAcceptsICStringNullable(i: Int, ic: ICStringNullable) {}
|
||||
inline fun ordinaryInlineAcceptsICAny(i: Int, ic: ICAny) {}
|
||||
inline fun ordinaryInlineAcceptsICAnyNullable(i: Int, ic: ICAnyNullable) {}
|
||||
inline fun ordinaryInlineAcceptsICInt(i: Int, ic: ICInt) {}
|
||||
inline fun ordinaryInlineAcceptsICIntNullable(i: Int, ic: ICIntNullable) {}
|
||||
inline fun ordinaryInlineAcceptsICString_Null(i: Int, ic: ICString?) {}
|
||||
inline fun ordinaryInlineAcceptsICStringNullable_Null(i: Int, ic: ICStringNullable?) {}
|
||||
inline fun ordinaryInlineAcceptsICAny_Null(i: Int, ic: ICAny?) {}
|
||||
inline fun ordinaryInlineAcceptsICAnyNullable_Null(i: Int, ic: ICAnyNullable?) {}
|
||||
inline fun ordinaryInlineAcceptsICInt_Null(i: Int, ic: ICInt?) {}
|
||||
inline fun ordinaryInlineAcceptsICIntNullable_Null(i: Int, ic: ICIntNullable?) {}
|
||||
suspend fun suspendNoninlineReturnsICString(): ICString = ICString("")
|
||||
suspend fun suspendNoninlineReturnsICStringNullable(): ICStringNullable = ICStringNullable("")
|
||||
suspend fun suspendNoninlineReturnsICAny(): ICAny = ICAny("")
|
||||
suspend fun suspendNoninlineReturnsICAnyNullable(): ICAnyNullable = ICAnyNullable("")
|
||||
suspend fun suspendNoninlineReturnsICInt(): ICInt = ICInt(0)
|
||||
suspend fun suspendNoninlineReturnsICIntNullable(): ICIntNullable = ICIntNullable(0)
|
||||
suspend fun suspendNoninlineReturnsICString_Null(): ICString? = null
|
||||
suspend fun suspendNoninlineReturnsICStringNullable_Null(): ICStringNullable? = null
|
||||
suspend fun suspendNoninlineReturnsICAny_Null(): ICAny? = null
|
||||
suspend fun suspendNoninlineReturnsICAnyNullable_Null(): ICAnyNullable? = null
|
||||
suspend fun suspendNoninlineReturnsICInt_Null(): ICInt? = null
|
||||
suspend fun suspendNoninlineReturnsICIntNullable_Null(): ICIntNullable? = null
|
||||
suspend fun suspendNoninlineAcceptsICString(i: Int, ic: ICString) {}
|
||||
suspend fun suspendNoninlineAcceptsICStringNullable(i: Int, ic: ICStringNullable) {}
|
||||
suspend fun suspendNoninlineAcceptsICAny(i: Int, ic: ICAny) {}
|
||||
suspend fun suspendNoninlineAcceptsICAnyNullable(i: Int, ic: ICAnyNullable) {}
|
||||
suspend fun suspendNoninlineAcceptsICInt(i: Int, ic: ICInt) {}
|
||||
suspend fun suspendNoninlineAcceptsICIntNullable(i: Int, ic: ICIntNullable) {}
|
||||
suspend fun suspendNoninlineAcceptsICString_Null(i: Int, ic: ICString?) {}
|
||||
suspend fun suspendNoninlineAcceptsICStringNullable_Null(i: Int, ic: ICStringNullable?) {}
|
||||
suspend fun suspendNoninlineAcceptsICAny_Null(i: Int, ic: ICAny?) {}
|
||||
suspend fun suspendNoninlineAcceptsICAnyNullable_Null(i: Int, ic: ICAnyNullable?) {}
|
||||
suspend fun suspendNoninlineAcceptsICInt_Null(i: Int, ic: ICInt?) {}
|
||||
suspend fun suspendNoninlineAcceptsICIntNullable_Null(i: Int, ic: ICIntNullable?) {}
|
||||
suspend inline fun suspendInlineReturnsICString(): ICString = ICString("")
|
||||
suspend inline fun suspendInlineReturnsICStringNullable(): ICStringNullable = ICStringNullable("")
|
||||
suspend inline fun suspendInlineReturnsICAny(): ICAny = ICAny("")
|
||||
suspend inline fun suspendInlineReturnsICAnyNullable(): ICAnyNullable = ICAnyNullable("")
|
||||
suspend inline fun suspendInlineReturnsICInt(): ICInt = ICInt(0)
|
||||
suspend inline fun suspendInlineReturnsICIntNullable(): ICIntNullable = ICIntNullable(0)
|
||||
suspend inline fun suspendInlineReturnsICString_Null(): ICString? = null
|
||||
suspend inline fun suspendInlineReturnsICStringNullable_Null(): ICStringNullable? = null
|
||||
suspend inline fun suspendInlineReturnsICAny_Null(): ICAny? = null
|
||||
suspend inline fun suspendInlineReturnsICAnyNullable_Null(): ICAnyNullable? = null
|
||||
suspend inline fun suspendInlineReturnsICInt_Null(): ICInt? = null
|
||||
suspend inline fun suspendInlineReturnsICIntNullable_Null(): ICIntNullable? = null
|
||||
suspend inline fun suspendInlineAcceptsICString(i: Int, ic: ICString) {}
|
||||
suspend inline fun suspendInlineAcceptsICStringNullable(i: Int, ic: ICStringNullable) {}
|
||||
suspend inline fun suspendInlineAcceptsICAny(i: Int, ic: ICAny) {}
|
||||
suspend inline fun suspendInlineAcceptsICAnyNullable(i: Int, ic: ICAnyNullable) {}
|
||||
suspend inline fun suspendInlineAcceptsICInt(i: Int, ic: ICInt) {}
|
||||
suspend inline fun suspendInlineAcceptsICIntNullable(i: Int, ic: ICIntNullable) {}
|
||||
suspend inline fun suspendInlineAcceptsICString_Null(i: Int, ic: ICString?) {}
|
||||
suspend inline fun suspendInlineAcceptsICStringNullable_Null(i: Int, ic: ICStringNullable?) {}
|
||||
suspend inline fun suspendInlineAcceptsICAny_Null(i: Int, ic: ICAny?) {}
|
||||
suspend inline fun suspendInlineAcceptsICAnyNullable_Null(i: Int, ic: ICAnyNullable?) {}
|
||||
suspend inline fun suspendInlineAcceptsICInt_Null(i: Int, ic: ICInt?) {}
|
||||
suspend inline fun suspendInlineAcceptsICIntNullable_Null(i: Int, ic: ICIntNullable?) {}
|
||||
|
||||
class C {
|
||||
fun ordinaryNoninlineReturnsICString(): ICString = ICString("")
|
||||
fun ordinaryNoninlineReturnsICStringNullable(): ICStringNullable = ICStringNullable("")
|
||||
fun ordinaryNoninlineReturnsICAny(): ICAny = ICAny("")
|
||||
fun ordinaryNoninlineReturnsICAnyNullable(): ICAnyNullable = ICAnyNullable("")
|
||||
fun ordinaryNoninlineReturnsICInt(): ICInt = ICInt(0)
|
||||
fun ordinaryNoninlineReturnsICIntNullable(): ICIntNullable = ICIntNullable(0)
|
||||
fun ordinaryNoninlineReturnsICString_Null(): ICString? = null
|
||||
fun ordinaryNoninlineReturnsICStringNullable_Null(): ICStringNullable? = null
|
||||
fun ordinaryNoninlineReturnsICAny_Null(): ICAny? = null
|
||||
fun ordinaryNoninlineReturnsICAnyNullable_Null(): ICAnyNullable? = null
|
||||
fun ordinaryNoninlineReturnsICInt_Null(): ICInt? = null
|
||||
fun ordinaryNoninlineReturnsICIntNullable_Null(): ICIntNullable? = null
|
||||
fun ordinaryNoninlineAcceptsICString(i: Int, ic: ICString) {}
|
||||
fun ordinaryNoninlineAcceptsICStringNullable(i: Int, ic: ICStringNullable) {}
|
||||
fun ordinaryNoninlineAcceptsICAny(i: Int, ic: ICAny) {}
|
||||
fun ordinaryNoninlineAcceptsICAnyNullable(i: Int, ic: ICAnyNullable) {}
|
||||
fun ordinaryNoninlineAcceptsICInt(i: Int, ic: ICInt) {}
|
||||
fun ordinaryNoninlineAcceptsICIntNullable(i: Int, ic: ICIntNullable) {}
|
||||
fun ordinaryNoninlineAcceptsICString_Null(i: Int, ic: ICString?) {}
|
||||
fun ordinaryNoninlineAcceptsICStringNullable_Null(i: Int, ic: ICStringNullable?) {}
|
||||
fun ordinaryNoninlineAcceptsICAny_Null(i: Int, ic: ICAny?) {}
|
||||
fun ordinaryNoninlineAcceptsICAnyNullable_Null(i: Int, ic: ICAnyNullable?) {}
|
||||
fun ordinaryNoninlineAcceptsICInt_Null(i: Int, ic: ICInt?) {}
|
||||
fun ordinaryNoninlineAcceptsICIntNullable_Null(i: Int, ic: ICIntNullable?) {}
|
||||
inline fun ordinaryInlineReturnsICString(): ICString = ICString("")
|
||||
inline fun ordinaryInlineReturnsICStringNullable(): ICStringNullable = ICStringNullable("")
|
||||
inline fun ordinaryInlineReturnsICAny(): ICAny = ICAny("")
|
||||
inline fun ordinaryInlineReturnsICAnyNullable(): ICAnyNullable = ICAnyNullable("")
|
||||
inline fun ordinaryInlineReturnsICInt(): ICInt = ICInt(0)
|
||||
inline fun ordinaryInlineReturnsICIntNullable(): ICIntNullable = ICIntNullable(0)
|
||||
inline fun ordinaryInlineReturnsICString_Null(): ICString? = null
|
||||
inline fun ordinaryInlineReturnsICStringNullable_Null(): ICStringNullable? = null
|
||||
inline fun ordinaryInlineReturnsICAny_Null(): ICAny? = null
|
||||
inline fun ordinaryInlineReturnsICAnyNullable_Null(): ICAnyNullable? = null
|
||||
inline fun ordinaryInlineReturnsICInt_Null(): ICInt? = null
|
||||
inline fun ordinaryInlineReturnsICIntNullable_Null(): ICIntNullable? = null
|
||||
inline fun ordinaryInlineAcceptsICString(i: Int, ic: ICString) {}
|
||||
inline fun ordinaryInlineAcceptsICStringNullable(i: Int, ic: ICStringNullable) {}
|
||||
inline fun ordinaryInlineAcceptsICAny(i: Int, ic: ICAny) {}
|
||||
inline fun ordinaryInlineAcceptsICAnyNullable(i: Int, ic: ICAnyNullable) {}
|
||||
inline fun ordinaryInlineAcceptsICInt(i: Int, ic: ICInt) {}
|
||||
inline fun ordinaryInlineAcceptsICIntNullable(i: Int, ic: ICIntNullable) {}
|
||||
inline fun ordinaryInlineAcceptsICString_Null(i: Int, ic: ICString?) {}
|
||||
inline fun ordinaryInlineAcceptsICStringNullable_Null(i: Int, ic: ICStringNullable?) {}
|
||||
inline fun ordinaryInlineAcceptsICAny_Null(i: Int, ic: ICAny?) {}
|
||||
inline fun ordinaryInlineAcceptsICAnyNullable_Null(i: Int, ic: ICAnyNullable?) {}
|
||||
inline fun ordinaryInlineAcceptsICInt_Null(i: Int, ic: ICInt?) {}
|
||||
inline fun ordinaryInlineAcceptsICIntNullable_Null(i: Int, ic: ICIntNullable?) {}
|
||||
suspend fun suspendNoninlineReturnsICString(): ICString = ICString("")
|
||||
suspend fun suspendNoninlineReturnsICStringNullable(): ICStringNullable = ICStringNullable("")
|
||||
suspend fun suspendNoninlineReturnsICAny(): ICAny = ICAny("")
|
||||
suspend fun suspendNoninlineReturnsICAnyNullable(): ICAnyNullable = ICAnyNullable("")
|
||||
suspend fun suspendNoninlineReturnsICInt(): ICInt = ICInt(0)
|
||||
suspend fun suspendNoninlineReturnsICIntNullable(): ICIntNullable = ICIntNullable(0)
|
||||
suspend fun suspendNoninlineReturnsICString_Null(): ICString? = null
|
||||
suspend fun suspendNoninlineReturnsICStringNullable_Null(): ICStringNullable? = null
|
||||
suspend fun suspendNoninlineReturnsICAny_Null(): ICAny? = null
|
||||
suspend fun suspendNoninlineReturnsICAnyNullable_Null(): ICAnyNullable? = null
|
||||
suspend fun suspendNoninlineReturnsICInt_Null(): ICInt? = null
|
||||
suspend fun suspendNoninlineReturnsICIntNullable_Null(): ICIntNullable? = null
|
||||
suspend fun suspendNoninlineAcceptsICString(i: Int, ic: ICString) {}
|
||||
suspend fun suspendNoninlineAcceptsICStringNullable(i: Int, ic: ICStringNullable) {}
|
||||
suspend fun suspendNoninlineAcceptsICAny(i: Int, ic: ICAny) {}
|
||||
suspend fun suspendNoninlineAcceptsICAnyNullable(i: Int, ic: ICAnyNullable) {}
|
||||
suspend fun suspendNoninlineAcceptsICInt(i: Int, ic: ICInt) {}
|
||||
suspend fun suspendNoninlineAcceptsICIntNullable(i: Int, ic: ICIntNullable) {}
|
||||
suspend fun suspendNoninlineAcceptsICString_Null(i: Int, ic: ICString?) {}
|
||||
suspend fun suspendNoninlineAcceptsICStringNullable_Null(i: Int, ic: ICStringNullable?) {}
|
||||
suspend fun suspendNoninlineAcceptsICAny_Null(i: Int, ic: ICAny?) {}
|
||||
suspend fun suspendNoninlineAcceptsICAnyNullable_Null(i: Int, ic: ICAnyNullable?) {}
|
||||
suspend fun suspendNoninlineAcceptsICInt_Null(i: Int, ic: ICInt?) {}
|
||||
suspend fun suspendNoninlineAcceptsICIntNullable_Null(i: Int, ic: ICIntNullable?) {}
|
||||
suspend inline fun suspendInlineReturnsICString(): ICString = ICString("")
|
||||
suspend inline fun suspendInlineReturnsICStringNullable(): ICStringNullable = ICStringNullable("")
|
||||
suspend inline fun suspendInlineReturnsICAny(): ICAny = ICAny("")
|
||||
suspend inline fun suspendInlineReturnsICAnyNullable(): ICAnyNullable = ICAnyNullable("")
|
||||
suspend inline fun suspendInlineReturnsICInt(): ICInt = ICInt(0)
|
||||
suspend inline fun suspendInlineReturnsICIntNullable(): ICIntNullable = ICIntNullable(0)
|
||||
suspend inline fun suspendInlineReturnsICString_Null(): ICString? = null
|
||||
suspend inline fun suspendInlineReturnsICStringNullable_Null(): ICStringNullable? = null
|
||||
suspend inline fun suspendInlineReturnsICAny_Null(): ICAny? = null
|
||||
suspend inline fun suspendInlineReturnsICAnyNullable_Null(): ICAnyNullable? = null
|
||||
suspend inline fun suspendInlineReturnsICInt_Null(): ICInt? = null
|
||||
suspend inline fun suspendInlineReturnsICIntNullable_Null(): ICIntNullable? = null
|
||||
suspend inline fun suspendInlineAcceptsICString(i: Int, ic: ICString) {}
|
||||
suspend inline fun suspendInlineAcceptsICStringNullable(i: Int, ic: ICStringNullable) {}
|
||||
suspend inline fun suspendInlineAcceptsICAny(i: Int, ic: ICAny) {}
|
||||
suspend inline fun suspendInlineAcceptsICAnyNullable(i: Int, ic: ICAnyNullable) {}
|
||||
suspend inline fun suspendInlineAcceptsICInt(i: Int, ic: ICInt) {}
|
||||
suspend inline fun suspendInlineAcceptsICIntNullable(i: Int, ic: ICIntNullable) {}
|
||||
suspend inline fun suspendInlineAcceptsICString_Null(i: Int, ic: ICString?) {}
|
||||
suspend inline fun suspendInlineAcceptsICStringNullable_Null(i: Int, ic: ICStringNullable?) {}
|
||||
suspend inline fun suspendInlineAcceptsICAny_Null(i: Int, ic: ICAny?) {}
|
||||
suspend inline fun suspendInlineAcceptsICAnyNullable_Null(i: Int, ic: ICAnyNullable?) {}
|
||||
suspend inline fun suspendInlineAcceptsICInt_Null(i: Int, ic: ICInt?) {}
|
||||
suspend inline fun suspendInlineAcceptsICIntNullable_Null(i: Int, ic: ICIntNullable?) {}
|
||||
}
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
warning: ATTENTION!
|
||||
This build uses unsafe internal compiler arguments:
|
||||
|
||||
-XXLanguage:-MangleClassMembersReturningInlineClasses
|
||||
|
||||
This mode is not recommended for production use,
|
||||
as no stability/compatibility guarantees are given on
|
||||
compiler or generated code. Use it at your own risk!
|
||||
|
||||
OK
|
||||
Vendored
+194
@@ -0,0 +1,194 @@
|
||||
suspend fun main() {
|
||||
ordinaryNoninlineReturnsICString()
|
||||
ordinaryNoninlineReturnsICStringNullable()
|
||||
ordinaryNoninlineReturnsICAny()
|
||||
ordinaryNoninlineReturnsICAnyNullable()
|
||||
ordinaryNoninlineReturnsICInt()
|
||||
ordinaryNoninlineReturnsICIntNullable()
|
||||
ordinaryNoninlineReturnsICString_Null()
|
||||
ordinaryNoninlineReturnsICStringNullable_Null()
|
||||
ordinaryNoninlineReturnsICAny_Null()
|
||||
ordinaryNoninlineReturnsICAnyNullable_Null()
|
||||
ordinaryNoninlineReturnsICInt_Null()
|
||||
ordinaryNoninlineReturnsICIntNullable_Null()
|
||||
ordinaryNoninlineAcceptsICString(1, ICString(""))
|
||||
ordinaryNoninlineAcceptsICStringNullable(1, ICStringNullable(""))
|
||||
ordinaryNoninlineAcceptsICAny(1, ICAny(""))
|
||||
ordinaryNoninlineAcceptsICAnyNullable(1, ICAnyNullable(""))
|
||||
ordinaryNoninlineAcceptsICInt(1, ICInt(0))
|
||||
ordinaryNoninlineAcceptsICIntNullable(1, ICIntNullable(0))
|
||||
ordinaryNoninlineAcceptsICString_Null(1, null)
|
||||
ordinaryNoninlineAcceptsICStringNullable_Null(1, null)
|
||||
ordinaryNoninlineAcceptsICAny_Null(1, null)
|
||||
ordinaryNoninlineAcceptsICAnyNullable_Null(1, null)
|
||||
ordinaryNoninlineAcceptsICInt_Null(1, null)
|
||||
ordinaryNoninlineAcceptsICIntNullable_Null(1, null)
|
||||
ordinaryInlineReturnsICString()
|
||||
ordinaryInlineReturnsICStringNullable()
|
||||
ordinaryInlineReturnsICAny()
|
||||
ordinaryInlineReturnsICAnyNullable()
|
||||
ordinaryInlineReturnsICInt()
|
||||
ordinaryInlineReturnsICIntNullable()
|
||||
ordinaryInlineReturnsICString_Null()
|
||||
ordinaryInlineReturnsICStringNullable_Null()
|
||||
ordinaryInlineReturnsICAny_Null()
|
||||
ordinaryInlineReturnsICAnyNullable_Null()
|
||||
ordinaryInlineReturnsICInt_Null()
|
||||
ordinaryInlineReturnsICIntNullable_Null()
|
||||
ordinaryInlineAcceptsICString(1, ICString(""))
|
||||
ordinaryInlineAcceptsICStringNullable(1, ICStringNullable(""))
|
||||
ordinaryInlineAcceptsICAny(1, ICAny(""))
|
||||
ordinaryInlineAcceptsICAnyNullable(1, ICAnyNullable(""))
|
||||
ordinaryInlineAcceptsICInt(1, ICInt(0))
|
||||
ordinaryInlineAcceptsICIntNullable(1, ICIntNullable(0))
|
||||
ordinaryInlineAcceptsICString_Null(1, null)
|
||||
ordinaryInlineAcceptsICStringNullable_Null(1, null)
|
||||
ordinaryInlineAcceptsICAny_Null(1, null)
|
||||
ordinaryInlineAcceptsICAnyNullable_Null(1, null)
|
||||
ordinaryInlineAcceptsICInt_Null(1, null)
|
||||
ordinaryInlineAcceptsICIntNullable_Null(1, null)
|
||||
suspendNoninlineReturnsICString()
|
||||
suspendNoninlineReturnsICStringNullable()
|
||||
suspendNoninlineReturnsICAny()
|
||||
suspendNoninlineReturnsICAnyNullable()
|
||||
suspendNoninlineReturnsICInt()
|
||||
suspendNoninlineReturnsICIntNullable()
|
||||
suspendNoninlineReturnsICString_Null()
|
||||
suspendNoninlineReturnsICStringNullable_Null()
|
||||
suspendNoninlineReturnsICAny_Null()
|
||||
suspendNoninlineReturnsICAnyNullable_Null()
|
||||
suspendNoninlineReturnsICInt_Null()
|
||||
suspendNoninlineReturnsICIntNullable_Null()
|
||||
suspendNoninlineAcceptsICString(1, ICString(""))
|
||||
suspendNoninlineAcceptsICStringNullable(1, ICStringNullable(""))
|
||||
suspendNoninlineAcceptsICAny(1, ICAny(""))
|
||||
suspendNoninlineAcceptsICAnyNullable(1, ICAnyNullable(""))
|
||||
suspendNoninlineAcceptsICInt(1, ICInt(0))
|
||||
suspendNoninlineAcceptsICIntNullable(1, ICIntNullable(0))
|
||||
suspendNoninlineAcceptsICString_Null(1, null)
|
||||
suspendNoninlineAcceptsICStringNullable_Null(1, null)
|
||||
suspendNoninlineAcceptsICAny_Null(1, null)
|
||||
suspendNoninlineAcceptsICAnyNullable_Null(1, null)
|
||||
suspendNoninlineAcceptsICInt_Null(1, null)
|
||||
suspendNoninlineAcceptsICIntNullable_Null(1, null)
|
||||
suspendInlineReturnsICString()
|
||||
suspendInlineReturnsICStringNullable()
|
||||
suspendInlineReturnsICAny()
|
||||
suspendInlineReturnsICAnyNullable()
|
||||
suspendInlineReturnsICInt()
|
||||
suspendInlineReturnsICIntNullable()
|
||||
suspendInlineReturnsICString_Null()
|
||||
suspendInlineReturnsICStringNullable_Null()
|
||||
suspendInlineReturnsICAny_Null()
|
||||
suspendInlineReturnsICAnyNullable_Null()
|
||||
suspendInlineReturnsICInt_Null()
|
||||
suspendInlineReturnsICIntNullable_Null()
|
||||
suspendInlineAcceptsICString(1, ICString(""))
|
||||
suspendInlineAcceptsICStringNullable(1, ICStringNullable(""))
|
||||
suspendInlineAcceptsICAny(1, ICAny(""))
|
||||
suspendInlineAcceptsICAnyNullable(1, ICAnyNullable(""))
|
||||
suspendInlineAcceptsICInt(1, ICInt(0))
|
||||
suspendInlineAcceptsICIntNullable(1, ICIntNullable(0))
|
||||
suspendInlineAcceptsICString_Null(1, null)
|
||||
suspendInlineAcceptsICStringNullable_Null(1, null)
|
||||
suspendInlineAcceptsICAny_Null(1, null)
|
||||
suspendInlineAcceptsICAnyNullable_Null(1, null)
|
||||
suspendInlineAcceptsICInt_Null(1, null)
|
||||
suspendInlineAcceptsICIntNullable_Null(1, null)
|
||||
C().ordinaryNoninlineReturnsICString()
|
||||
C().ordinaryNoninlineReturnsICStringNullable()
|
||||
C().ordinaryNoninlineReturnsICAny()
|
||||
C().ordinaryNoninlineReturnsICAnyNullable()
|
||||
C().ordinaryNoninlineReturnsICInt()
|
||||
C().ordinaryNoninlineReturnsICIntNullable()
|
||||
C().ordinaryNoninlineReturnsICString_Null()
|
||||
C().ordinaryNoninlineReturnsICStringNullable_Null()
|
||||
C().ordinaryNoninlineReturnsICAny_Null()
|
||||
C().ordinaryNoninlineReturnsICAnyNullable_Null()
|
||||
C().ordinaryNoninlineReturnsICInt_Null()
|
||||
C().ordinaryNoninlineReturnsICIntNullable_Null()
|
||||
C().ordinaryNoninlineAcceptsICString(1, ICString(""))
|
||||
C().ordinaryNoninlineAcceptsICStringNullable(1, ICStringNullable(""))
|
||||
C().ordinaryNoninlineAcceptsICAny(1, ICAny(""))
|
||||
C().ordinaryNoninlineAcceptsICAnyNullable(1, ICAnyNullable(""))
|
||||
C().ordinaryNoninlineAcceptsICInt(1, ICInt(0))
|
||||
C().ordinaryNoninlineAcceptsICIntNullable(1, ICIntNullable(0))
|
||||
C().ordinaryNoninlineAcceptsICString_Null(1, null)
|
||||
C().ordinaryNoninlineAcceptsICStringNullable_Null(1, null)
|
||||
C().ordinaryNoninlineAcceptsICAny_Null(1, null)
|
||||
C().ordinaryNoninlineAcceptsICAnyNullable_Null(1, null)
|
||||
C().ordinaryNoninlineAcceptsICInt_Null(1, null)
|
||||
C().ordinaryNoninlineAcceptsICIntNullable_Null(1, null)
|
||||
C().ordinaryInlineReturnsICString()
|
||||
C().ordinaryInlineReturnsICStringNullable()
|
||||
C().ordinaryInlineReturnsICAny()
|
||||
C().ordinaryInlineReturnsICAnyNullable()
|
||||
C().ordinaryInlineReturnsICInt()
|
||||
C().ordinaryInlineReturnsICIntNullable()
|
||||
C().ordinaryInlineReturnsICString_Null()
|
||||
C().ordinaryInlineReturnsICStringNullable_Null()
|
||||
C().ordinaryInlineReturnsICAny_Null()
|
||||
C().ordinaryInlineReturnsICAnyNullable_Null()
|
||||
C().ordinaryInlineReturnsICInt_Null()
|
||||
C().ordinaryInlineReturnsICIntNullable_Null()
|
||||
C().ordinaryInlineAcceptsICString(1, ICString(""))
|
||||
C().ordinaryInlineAcceptsICStringNullable(1, ICStringNullable(""))
|
||||
C().ordinaryInlineAcceptsICAny(1, ICAny(""))
|
||||
C().ordinaryInlineAcceptsICAnyNullable(1, ICAnyNullable(""))
|
||||
C().ordinaryInlineAcceptsICInt(1, ICInt(0))
|
||||
C().ordinaryInlineAcceptsICIntNullable(1, ICIntNullable(0))
|
||||
C().ordinaryInlineAcceptsICString_Null(1, null)
|
||||
C().ordinaryInlineAcceptsICStringNullable_Null(1, null)
|
||||
C().ordinaryInlineAcceptsICAny_Null(1, null)
|
||||
C().ordinaryInlineAcceptsICAnyNullable_Null(1, null)
|
||||
C().ordinaryInlineAcceptsICInt_Null(1, null)
|
||||
C().ordinaryInlineAcceptsICIntNullable_Null(1, null)
|
||||
C().suspendNoninlineReturnsICString()
|
||||
C().suspendNoninlineReturnsICStringNullable()
|
||||
C().suspendNoninlineReturnsICAny()
|
||||
C().suspendNoninlineReturnsICAnyNullable()
|
||||
C().suspendNoninlineReturnsICInt()
|
||||
C().suspendNoninlineReturnsICIntNullable()
|
||||
C().suspendNoninlineReturnsICString_Null()
|
||||
C().suspendNoninlineReturnsICStringNullable_Null()
|
||||
C().suspendNoninlineReturnsICAny_Null()
|
||||
C().suspendNoninlineReturnsICAnyNullable_Null()
|
||||
C().suspendNoninlineReturnsICInt_Null()
|
||||
C().suspendNoninlineReturnsICIntNullable_Null()
|
||||
C().suspendNoninlineAcceptsICString(1, ICString(""))
|
||||
C().suspendNoninlineAcceptsICStringNullable(1, ICStringNullable(""))
|
||||
C().suspendNoninlineAcceptsICAny(1, ICAny(""))
|
||||
C().suspendNoninlineAcceptsICAnyNullable(1, ICAnyNullable(""))
|
||||
C().suspendNoninlineAcceptsICInt(1, ICInt(0))
|
||||
C().suspendNoninlineAcceptsICIntNullable(1, ICIntNullable(0))
|
||||
C().suspendNoninlineAcceptsICString_Null(1, null)
|
||||
C().suspendNoninlineAcceptsICStringNullable_Null(1, null)
|
||||
C().suspendNoninlineAcceptsICAny_Null(1, null)
|
||||
C().suspendNoninlineAcceptsICAnyNullable_Null(1, null)
|
||||
C().suspendNoninlineAcceptsICInt_Null(1, null)
|
||||
C().suspendNoninlineAcceptsICIntNullable_Null(1, null)
|
||||
C().suspendInlineReturnsICString()
|
||||
C().suspendInlineReturnsICStringNullable()
|
||||
C().suspendInlineReturnsICAny()
|
||||
C().suspendInlineReturnsICAnyNullable()
|
||||
C().suspendInlineReturnsICInt()
|
||||
C().suspendInlineReturnsICIntNullable()
|
||||
C().suspendInlineReturnsICString_Null()
|
||||
C().suspendInlineReturnsICStringNullable_Null()
|
||||
C().suspendInlineReturnsICAny_Null()
|
||||
C().suspendInlineReturnsICAnyNullable_Null()
|
||||
C().suspendInlineReturnsICInt_Null()
|
||||
C().suspendInlineReturnsICIntNullable_Null()
|
||||
C().suspendInlineAcceptsICString(1, ICString(""))
|
||||
C().suspendInlineAcceptsICStringNullable(1, ICStringNullable(""))
|
||||
C().suspendInlineAcceptsICAny(1, ICAny(""))
|
||||
C().suspendInlineAcceptsICAnyNullable(1, ICAnyNullable(""))
|
||||
C().suspendInlineAcceptsICInt(1, ICInt(0))
|
||||
C().suspendInlineAcceptsICIntNullable(1, ICIntNullable(0))
|
||||
C().suspendInlineAcceptsICString_Null(1, null)
|
||||
C().suspendInlineAcceptsICStringNullable_Null(1, null)
|
||||
C().suspendInlineAcceptsICAny_Null(1, null)
|
||||
C().suspendInlineAcceptsICAnyNullable_Null(1, null)
|
||||
C().suspendInlineAcceptsICInt_Null(1, null)
|
||||
C().suspendInlineAcceptsICIntNullable_Null(1, null)
|
||||
}
|
||||
+22
-1
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler
|
||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
||||
import org.jetbrains.kotlin.codegen.inline.GENERATE_SMAP
|
||||
import org.jetbrains.kotlin.codegen.inline.remove
|
||||
import org.jetbrains.kotlin.codegen.optimization.common.asSequence
|
||||
import org.jetbrains.kotlin.codegen.optimization.common.intConstant
|
||||
@@ -714,6 +713,28 @@ class CompileKotlinAgainstCustomBinariesTest : AbstractKotlinCompilerIntegration
|
||||
)
|
||||
}
|
||||
|
||||
fun testInlineClassesManglingAgainstLV13() {
|
||||
val library = compileLibrary(
|
||||
"library",
|
||||
additionalOptions = listOf("-language-version", "1.3", "-Xinline-classes"),
|
||||
checkKotlinOutput = {}
|
||||
)
|
||||
compileKotlin(
|
||||
"source.kt",
|
||||
tmpdir,
|
||||
listOf(library),
|
||||
additionalOptions = listOf("-XXLanguage:-MangleClassMembersReturningInlineClasses", "-Xinline-classes")
|
||||
)
|
||||
// Difference in mangling becomes apparent only on load time as NSME, so, to check the mangling we need to load the classfile
|
||||
loadClassFile("SourceKt", tmpdir, library)
|
||||
}
|
||||
|
||||
private fun loadClassFile(className: String, dir: File, library: File) {
|
||||
val classLoader = URLClassLoader(arrayOf(dir.toURI().toURL(), library.toURI().toURL()))
|
||||
val mainClass = classLoader.loadClass(className)
|
||||
mainClass.getDeclaredMethod("main", Array<String>::class.java).invoke(null, arrayOf<String>())
|
||||
}
|
||||
|
||||
companion object {
|
||||
// compiler before 1.1.4 version did not include suspension marks into bytecode.
|
||||
private fun stripSuspensionMarksToImitateLegacyCompiler(bytes: ByteArray): Pair<ByteArray, Int> {
|
||||
|
||||
@@ -209,11 +209,14 @@ abstract class AbstractVersionRequirementTest : TestCaseWithTmpdir() {
|
||||
fqNamesWithRequirements = listOf(
|
||||
"test.IC",
|
||||
"test.Ctor.<init>",
|
||||
"test.Foo",
|
||||
"test.Bar",
|
||||
"test.simpleFun",
|
||||
"test.aliasedFun",
|
||||
"test.simpleProp",
|
||||
"test.result",
|
||||
"test.simpleProp"
|
||||
)
|
||||
"test.Foo",
|
||||
"test.Bar"
|
||||
),
|
||||
shouldBeSingleRequirement = false
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,48 +79,56 @@ public final annotation class A : kotlin/Annotation {
|
||||
public final get
|
||||
|
||||
// requires language version 1.3.0 (level=ERROR)
|
||||
// requires compiler version 1.4.30 (level=ERROR)
|
||||
// requires language version 1.4.0 (level=ERROR)
|
||||
// getter: ub()B
|
||||
public final val ub: kotlin/UByte
|
||||
public final get
|
||||
|
||||
// requires language version 1.3.0 (level=ERROR)
|
||||
// requires compiler version 1.4.30 (level=ERROR)
|
||||
// requires language version 1.4.0 (level=ERROR)
|
||||
// getter: ub_max()B
|
||||
public final val ub_max: kotlin/UByte
|
||||
public final get
|
||||
|
||||
// requires language version 1.3.0 (level=ERROR)
|
||||
// requires compiler version 1.4.30 (level=ERROR)
|
||||
// requires language version 1.4.0 (level=ERROR)
|
||||
// getter: ui()I
|
||||
public final val ui: kotlin/UInt
|
||||
public final get
|
||||
|
||||
// requires language version 1.3.0 (level=ERROR)
|
||||
// requires compiler version 1.4.30 (level=ERROR)
|
||||
// requires language version 1.4.0 (level=ERROR)
|
||||
// getter: ui_max()I
|
||||
public final val ui_max: kotlin/UInt
|
||||
public final get
|
||||
|
||||
// requires language version 1.3.0 (level=ERROR)
|
||||
// requires compiler version 1.4.30 (level=ERROR)
|
||||
// requires language version 1.4.0 (level=ERROR)
|
||||
// getter: ul()J
|
||||
public final val ul: kotlin/ULong
|
||||
public final get
|
||||
|
||||
// requires language version 1.3.0 (level=ERROR)
|
||||
// requires compiler version 1.4.30 (level=ERROR)
|
||||
// requires language version 1.4.0 (level=ERROR)
|
||||
// getter: ul_max()J
|
||||
public final val ul_max: kotlin/ULong
|
||||
public final get
|
||||
|
||||
// requires language version 1.3.0 (level=ERROR)
|
||||
// requires compiler version 1.4.30 (level=ERROR)
|
||||
// requires language version 1.4.0 (level=ERROR)
|
||||
// getter: us()S
|
||||
public final val us: kotlin/UShort
|
||||
public final get
|
||||
|
||||
// requires language version 1.3.0 (level=ERROR)
|
||||
// requires compiler version 1.4.30 (level=ERROR)
|
||||
// requires language version 1.4.0 (level=ERROR)
|
||||
// getter: us_max()S
|
||||
public final val us_max: kotlin/UShort
|
||||
|
||||
Reference in New Issue
Block a user