IC mangling: Change mangling rules
1. Use 'x' for each parameter, which is not an inline class, every possible clash is handled by signature rather than name. This change makes more API changes binary-compatible. So, the changes are in line with the vision of inline classes are value classes, like primitives. 2. Take return type into account when mangling a function if the return type is inline class. Otherwise, boxing bridge will not be generated, which leads to CCE at runtime.
This commit is contained in:
+18
-13
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.codegen.state
|
||||
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.codegen.coroutines.unwrapInitialDescriptorForSuspendFunction
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
@@ -13,6 +14,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
|
||||
import org.jetbrains.kotlin.resolve.jvm.requiresFunctionNameManglingForParameterTypes
|
||||
import org.jetbrains.kotlin.resolve.jvm.requiresFunctionNameManglingForReturnType
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.typeUtil.isPrimitiveNumberOrNullableType
|
||||
import org.jetbrains.kotlin.types.typeUtil.representativeUpperBound
|
||||
import java.security.MessageDigest
|
||||
import java.util.*
|
||||
@@ -29,19 +31,20 @@ fun getManglingSuffixBasedOnKotlinSignature(
|
||||
// Some stdlib functions ('Result.success', 'Result.failure') are annotated with '@JvmName' as a workaround for forward compatibility.
|
||||
if (DescriptorUtils.hasJvmNameAnnotation(descriptor)) return null
|
||||
|
||||
// If a function accepts inline class parameters, mangle its name.
|
||||
if (requiresFunctionNameManglingForParameterTypes(descriptor)) {
|
||||
return "-" + md5base64(collectSignatureForMangling(descriptor))
|
||||
}
|
||||
val unwrappedDescriptor = descriptor.unwrapInitialDescriptorForSuspendFunction()
|
||||
|
||||
// If a class member function returns inline class value, mangle its name.
|
||||
// NB here function can be a suspend function JVM view with return type replaced with 'Any',
|
||||
// should unwrap it and take original return type instead.
|
||||
if (shouldMangleByReturnType) {
|
||||
val unwrappedDescriptor = descriptor.unwrapInitialDescriptorForSuspendFunction()
|
||||
if (requiresFunctionNameManglingForReturnType(unwrappedDescriptor)) {
|
||||
return "-" + md5base64(":" + getSignatureElementForMangling(unwrappedDescriptor.returnType!!))
|
||||
}
|
||||
// If a function accepts inline class parameters, mangle its name.
|
||||
if (requiresFunctionNameManglingForParameterTypes(descriptor) ||
|
||||
(shouldMangleByReturnType && requiresFunctionNameManglingForReturnType(unwrappedDescriptor))
|
||||
) {
|
||||
// If a class member function returns inline class value, mangle its name.
|
||||
// NB here function can be a suspend function JVM view with return type replaced with 'Any',
|
||||
// should unwrap it and take original return type instead.
|
||||
val signature = collectSignatureForMangling(descriptor) +
|
||||
if (shouldMangleByReturnType && requiresFunctionNameManglingForReturnType(unwrappedDescriptor))
|
||||
":" + getSignatureElementForMangling(unwrappedDescriptor.returnType!!)
|
||||
else ""
|
||||
return "-" + md5base64(signature)
|
||||
}
|
||||
return null
|
||||
}
|
||||
@@ -54,11 +57,13 @@ private fun collectSignatureForMangling(descriptor: CallableMemberDescriptor): S
|
||||
private fun getSignatureElementForMangling(type: KotlinType): String = buildString {
|
||||
val descriptor = type.constructor.declarationDescriptor ?: return ""
|
||||
when (descriptor) {
|
||||
is ClassDescriptor -> {
|
||||
is ClassDescriptor -> if (descriptor.isInline) {
|
||||
append('L')
|
||||
append(descriptor.fqNameUnsafe)
|
||||
if (type.isMarkedNullable) append('?')
|
||||
append(';')
|
||||
} else {
|
||||
append('x')
|
||||
}
|
||||
|
||||
is TypeParameterDescriptor -> {
|
||||
|
||||
+5
@@ -12837,6 +12837,11 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirOldFronte
|
||||
runTest("compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt")
|
||||
public void testChangingNullabilityOfOrdinaryClassIsBinaryCompatibleChange() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/inlineClasses/changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("constructorsJvmSignaturesClash.kt")
|
||||
public void testConstructorsJvmSignaturesClash() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/inlineClasses/constructorsJvmSignaturesClash.kt");
|
||||
|
||||
Generated
+5
@@ -14397,6 +14397,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt35234a.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithInlineClass.kt")
|
||||
public void testOverrideGenericWithInlineClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithInlineClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt")
|
||||
public void testOverrideGenericWithNullableInlineClassUpperBoundWithNonNullAny() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt");
|
||||
|
||||
+1
-1
@@ -369,7 +369,7 @@ internal class FunctionReferenceLowering(private val context: JvmBackendContext)
|
||||
name = if (samSuperType == null && callee.returnType.erasedUpperBound.isInline && context.state.functionsWithInlineClassReturnTypesMangled) {
|
||||
// For functions with inline class return type we need to mangle the invoke method.
|
||||
// Otherwise, bridge lowering may fail to generate bridges for inline class types erasing to Any.
|
||||
val suffix = InlineClassAbi.returnHashSuffix(callee)
|
||||
val suffix = InlineClassAbi.hashSuffix(callee, true)
|
||||
Name.identifier("${superMethod.owner.name.asString()}-${suffix}")
|
||||
} else superMethod.owner.name
|
||||
returnType = callee.returnType
|
||||
|
||||
+9
-12
@@ -72,10 +72,8 @@ object InlineClassAbi {
|
||||
}
|
||||
|
||||
val suffix = when {
|
||||
irFunction.fullValueParameterList.any { it.type.requiresMangling } ->
|
||||
hashSuffix(irFunction)
|
||||
mangleReturnTypes && irFunction.hasMangledReturnType ->
|
||||
returnHashSuffix(irFunction)
|
||||
irFunction.fullValueParameterList.any { it.type.requiresMangling } || (mangleReturnTypes && irFunction.hasMangledReturnType) ->
|
||||
hashSuffix(irFunction, mangleReturnTypes)
|
||||
(irFunction.parent as? IrClass)?.isInline == true &&
|
||||
irFunction.origin != IrDeclarationOrigin.IR_BUILTINS_STUB ->
|
||||
"impl"
|
||||
@@ -100,27 +98,26 @@ object InlineClassAbi {
|
||||
private val IrFunction.propertyName: Name
|
||||
get() = (this as IrSimpleFunction).correspondingPropertySymbol!!.owner.name
|
||||
|
||||
fun returnHashSuffix(irFunction: IrFunction) =
|
||||
md5base64(":${irFunction.returnType.eraseToString()}")
|
||||
|
||||
private fun hashSuffix(irFunction: IrFunction): String {
|
||||
fun hashSuffix(irFunction: IrFunction, mangleReturnTypes: Boolean): String {
|
||||
val signatureElementsForMangling =
|
||||
irFunction.fullValueParameterList.mapTo(mutableListOf()) { it.type.eraseToString() }
|
||||
if (irFunction.isSuspend) {
|
||||
// The JVM backend computes mangled names after creating suspend function views, but before default argument
|
||||
// stub insertion. It would be nice if this part of the continuation lowering happened earlier in the pipeline.
|
||||
// TODO: Move suspend function view creation before JvmInlineClassLowering.
|
||||
signatureElementsForMangling += "Lkotlin.coroutines.Continuation;"
|
||||
signatureElementsForMangling += "x"
|
||||
}
|
||||
return md5base64(signatureElementsForMangling.joinToString())
|
||||
val signatureString = signatureElementsForMangling.joinToString() +
|
||||
if (mangleReturnTypes && irFunction.hasMangledReturnType) ":${irFunction.returnType.eraseToString()}" else ""
|
||||
return md5base64(signatureString)
|
||||
}
|
||||
|
||||
private fun IrType.eraseToString() = buildString {
|
||||
private fun IrType.eraseToString() = if (getClass()?.isInline == true) buildString {
|
||||
append('L')
|
||||
append(erasedUpperBound.fqNameWhenAvailable!!)
|
||||
if (isNullable()) append('?')
|
||||
append(';')
|
||||
}
|
||||
} else "x"
|
||||
}
|
||||
|
||||
internal val IrType.requiresMangling: Boolean
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
inline class Marker(val i: Int)
|
||||
|
||||
interface I<T> {
|
||||
fun foo(i: Marker) : T
|
||||
}
|
||||
|
||||
inline class IC(val a: Any)
|
||||
|
||||
class C : I<IC> {
|
||||
override fun foo(i: Marker): IC = IC("OK")
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val i: I<IC> = C()
|
||||
val foo: IC = i.foo(Marker(0))
|
||||
if (foo.a != "OK") return "FAIL 1"
|
||||
val foo1: IC = C().foo(Marker(0))
|
||||
if (foo1.a != "OK") return "FAIL 2"
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+4
-4
@@ -21,8 +21,8 @@ public final class InlineList {
|
||||
private synthetic method <init>(p0: java.util.List): void
|
||||
public synthetic method add(p0: int, p1: java.lang.Object): void
|
||||
public synthetic method add(p0: java.lang.Object): boolean
|
||||
public method add-_bimVNw(p0: int, p1: int): void
|
||||
public method add-jHY5zpA(p0: int): boolean
|
||||
public method add-rENGgLQ(p0: int, p1: int): void
|
||||
public method addAll(p0: int, p1: java.util.Collection): boolean
|
||||
public method addAll(p0: java.util.Collection): boolean
|
||||
public synthetic final static method box-impl(p0: java.util.List): InlineList
|
||||
@@ -37,8 +37,8 @@ public final class InlineList {
|
||||
public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean
|
||||
public synthetic bridge method get(p0: int): java.lang.Object
|
||||
public method get-XAcLw3A(p0: int): int
|
||||
public static method get-XAcLw3A(p0: java.util.List, p1: int): int
|
||||
public method get-JnfgTak(p0: int): int
|
||||
public static method get-JnfgTak(p0: java.util.List, p1: int): int
|
||||
public method getSize(): int
|
||||
public static method getSize-impl(p0: java.util.List): int
|
||||
public method hashCode(): int
|
||||
@@ -63,7 +63,7 @@ public final class InlineList {
|
||||
public method removeAll(p0: java.util.Collection): boolean
|
||||
public method retainAll(p0: java.util.Collection): boolean
|
||||
public synthetic method set(p0: int, p1: java.lang.Object): java.lang.Object
|
||||
public method set-_bimVNw(p0: int, p1: int): int
|
||||
public method set-Geu8JnU(p0: int, p1: int): int
|
||||
public bridge final method size(): int
|
||||
public method subList(p0: int, p1: int): java.util.List
|
||||
public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List
|
||||
|
||||
Vendored
+4
-4
@@ -21,8 +21,8 @@ public final class InlineList {
|
||||
private synthetic method <init>(p0: java.util.List): void
|
||||
public synthetic bridge method add(p0: int, p1: java.lang.Object): void
|
||||
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||
public method add-_bimVNw(p0: int, p1: int): void
|
||||
public method add-jHY5zpA(p0: int): boolean
|
||||
public method add-rENGgLQ(p0: int, p1: int): void
|
||||
public method addAll(p0: int, p1: java.util.Collection): boolean
|
||||
public method addAll(p0: java.util.Collection): boolean
|
||||
public synthetic final static method box-impl(p0: java.util.List): InlineList
|
||||
@@ -37,8 +37,8 @@ public final class InlineList {
|
||||
public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean
|
||||
public synthetic bridge method get(p0: int): java.lang.Object
|
||||
public method get-XAcLw3A(p0: int): int
|
||||
public static method get-XAcLw3A(p0: java.util.List, p1: int): int
|
||||
public method get-JnfgTak(p0: int): int
|
||||
public static method get-JnfgTak(p0: java.util.List, p1: int): int
|
||||
public method getSize(): int
|
||||
public static method getSize-impl(p0: java.util.List): int
|
||||
public method hashCode(): int
|
||||
@@ -63,7 +63,7 @@ public final class InlineList {
|
||||
public method removeAll(p0: java.util.Collection): boolean
|
||||
public method retainAll(p0: java.util.Collection): boolean
|
||||
public synthetic bridge method set(p0: int, p1: java.lang.Object): java.lang.Object
|
||||
public method set-_bimVNw(p0: int, p1: int): int
|
||||
public method set-Geu8JnU(p0: int, p1: int): int
|
||||
public synthetic bridge method size(): int
|
||||
public method subList(p0: int, p1: int): java.util.List
|
||||
public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List
|
||||
|
||||
Vendored
+3
-3
@@ -50,8 +50,8 @@ public final class InlineMap {
|
||||
public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean
|
||||
public bridge final method get(p0: java.lang.Object): java.lang.Object
|
||||
public method get-FSIWiWE(p0: int): IV
|
||||
public static method get-FSIWiWE(p0: java.util.Map, p1: int): IV
|
||||
public method get-qgyy0Jc(p0: int): IV
|
||||
public static method get-qgyy0Jc(p0: java.util.Map, p1: int): IV
|
||||
public method getEntries(): java.util.Set
|
||||
public static method getEntries-impl(p0: java.util.Map): java.util.Set
|
||||
public method getKeys(): java.util.Set
|
||||
@@ -66,7 +66,7 @@ public final class InlineMap {
|
||||
public static method isEmpty-impl(p0: java.util.Map): boolean
|
||||
public bridge final method keySet(): java.util.Set
|
||||
public synthetic method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||
public method put-pjrbk2k(p0: int, p1: double): IV
|
||||
public method put-eSoqwEg(p0: int, p1: double): IV
|
||||
public method putAll(p0: java.util.Map): void
|
||||
public method remove(p0: java.lang.Object): java.lang.Object
|
||||
public bridge final method size(): int
|
||||
|
||||
Vendored
+1
-1
@@ -50,7 +50,7 @@ public final class InlineMapEntry {
|
||||
public method hashCode(): int
|
||||
public static method hashCode-impl(p0: java.util.Map$Entry): int
|
||||
public synthetic method setValue(p0: java.lang.Object): java.lang.Object
|
||||
public method setValue-jbX5DO8(p0: double): double
|
||||
public method setValue-cYiyq8k(p0: double): double
|
||||
public method toString(): java.lang.String
|
||||
public static method toString-impl(p0: java.util.Map$Entry): java.lang.String
|
||||
public synthetic final method unbox-impl(): java.util.Map$Entry
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ public final class InlineMapEntry {
|
||||
public method hashCode(): int
|
||||
public static method hashCode-impl(p0: java.util.Map$Entry): int
|
||||
public synthetic bridge method setValue(p0: java.lang.Object): java.lang.Object
|
||||
public method setValue-jbX5DO8(p0: double): double
|
||||
public method setValue-cYiyq8k(p0: double): double
|
||||
public method toString(): java.lang.String
|
||||
public static method toString-impl(p0: java.util.Map$Entry): java.lang.String
|
||||
public synthetic final method unbox-impl(): java.util.Map$Entry
|
||||
|
||||
Vendored
+4
-4
@@ -50,8 +50,8 @@ public final class InlineMap {
|
||||
public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean
|
||||
public synthetic bridge method get(p0: java.lang.Object): java.lang.Object
|
||||
public method get-FSIWiWE(p0: int): IV
|
||||
public static method get-FSIWiWE(p0: java.util.Map, p1: int): IV
|
||||
public method get-qgyy0Jc(p0: int): IV
|
||||
public static method get-qgyy0Jc(p0: java.util.Map, p1: int): IV
|
||||
public method getEntries(): java.util.Set
|
||||
public static method getEntries-impl(p0: java.util.Map): java.util.Set
|
||||
public method getKeys(): java.util.Set
|
||||
@@ -66,11 +66,11 @@ public final class InlineMap {
|
||||
public static method isEmpty-impl(p0: java.util.Map): boolean
|
||||
public synthetic bridge method keySet(): java.util.Set
|
||||
public synthetic bridge method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||
public method put-pjrbk2k(p0: int, p1: double): IV
|
||||
public method put-eSoqwEg(p0: int, p1: double): IV
|
||||
public method putAll(p0: java.util.Map): void
|
||||
public bridge final method remove(p0: java.lang.Object): IV
|
||||
public synthetic bridge method remove(p0: java.lang.Object): java.lang.Object
|
||||
public method remove-i7hxwoc(p0: java.lang.Object): IV
|
||||
public method remove-Ilea9M0(p0: java.lang.Object): IV
|
||||
public synthetic bridge method size(): int
|
||||
public method toString(): java.lang.String
|
||||
public static method toString-impl(p0: java.util.Map): java.lang.String
|
||||
|
||||
+8
-8
@@ -21,10 +21,10 @@ public final class InlineMutableList {
|
||||
private synthetic method <init>(p0: java.util.List): void
|
||||
public synthetic bridge method add(p0: int, p1: java.lang.Object): void
|
||||
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||
public method add-_bimVNw(p0: int, p1: long): void
|
||||
public static method add-_bimVNw(p0: java.util.List, p1: int, p2: long): void
|
||||
public static method add-jHY5zpA(p0: java.util.List, p1: long): boolean
|
||||
public method add-jHY5zpA(p0: long): boolean
|
||||
public method add-rENGgLQ(p0: int, p1: long): void
|
||||
public static method add-rENGgLQ(p0: java.util.List, p1: int, p2: long): void
|
||||
public method addAll(p0: int, p1: java.util.Collection): boolean
|
||||
public method addAll(p0: java.util.Collection): boolean
|
||||
public static method addAll-impl(p0: java.util.List, p1: int, p2: java.util.Collection): boolean
|
||||
@@ -42,8 +42,8 @@ public final class InlineMutableList {
|
||||
public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean
|
||||
public synthetic bridge method get(p0: int): java.lang.Object
|
||||
public method get-XAcLw3A(p0: int): long
|
||||
public static method get-XAcLw3A(p0: java.util.List, p1: int): long
|
||||
public method get-JnfgTak(p0: int): long
|
||||
public static method get-JnfgTak(p0: java.util.List, p1: int): long
|
||||
public method getSize(): int
|
||||
public static method getSize-impl(p0: java.util.List): int
|
||||
public method hashCode(): int
|
||||
@@ -69,13 +69,13 @@ public final class InlineMutableList {
|
||||
public method remove-jHY5zpA(p0: long): boolean
|
||||
public method removeAll(p0: java.util.Collection): boolean
|
||||
public static method removeAll-impl(p0: java.util.List, p1: java.util.Collection): boolean
|
||||
public method removeAt-XAcLw3A(p0: int): long
|
||||
public static method removeAt-XAcLw3A(p0: java.util.List, p1: int): long
|
||||
public method removeAt-JnfgTak(p0: int): long
|
||||
public static method removeAt-JnfgTak(p0: java.util.List, p1: int): long
|
||||
public method retainAll(p0: java.util.Collection): boolean
|
||||
public static method retainAll-impl(p0: java.util.List, p1: java.util.Collection): boolean
|
||||
public synthetic bridge method set(p0: int, p1: java.lang.Object): java.lang.Object
|
||||
public method set-_bimVNw(p0: int, p1: long): long
|
||||
public static method set-_bimVNw(p0: java.util.List, p1: int, p2: long): long
|
||||
public method set-Geu8JnU(p0: int, p1: long): long
|
||||
public static method set-Geu8JnU(p0: java.util.List, p1: int, p2: long): long
|
||||
public bridge final method size(): int
|
||||
public method subList(p0: int, p1: int): java.util.List
|
||||
public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List
|
||||
|
||||
+8
-8
@@ -21,10 +21,10 @@ public final class InlineMutableList {
|
||||
private synthetic method <init>(p0: java.util.List): void
|
||||
public synthetic bridge method add(p0: int, p1: java.lang.Object): void
|
||||
public synthetic bridge method add(p0: java.lang.Object): boolean
|
||||
public method add-_bimVNw(p0: int, p1: long): void
|
||||
public static method add-_bimVNw(p0: java.util.List, p1: int, p2: long): void
|
||||
public static method add-jHY5zpA(p0: java.util.List, p1: long): boolean
|
||||
public method add-jHY5zpA(p0: long): boolean
|
||||
public method add-rENGgLQ(p0: int, p1: long): void
|
||||
public static method add-rENGgLQ(p0: java.util.List, p1: int, p2: long): void
|
||||
public method addAll(p0: int, p1: java.util.Collection): boolean
|
||||
public method addAll(p0: java.util.Collection): boolean
|
||||
public static method addAll-impl(p0: java.util.List, p1: int, p2: java.util.Collection): boolean
|
||||
@@ -42,8 +42,8 @@ public final class InlineMutableList {
|
||||
public static method equals-impl(p0: java.util.List, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: java.util.List, p1: java.util.List): boolean
|
||||
public synthetic bridge method get(p0: int): java.lang.Object
|
||||
public method get-XAcLw3A(p0: int): long
|
||||
public static method get-XAcLw3A(p0: java.util.List, p1: int): long
|
||||
public method get-JnfgTak(p0: int): long
|
||||
public static method get-JnfgTak(p0: java.util.List, p1: int): long
|
||||
public method getSize(): int
|
||||
public static method getSize-impl(p0: java.util.List): int
|
||||
public method hashCode(): int
|
||||
@@ -69,13 +69,13 @@ public final class InlineMutableList {
|
||||
public method remove-jHY5zpA(p0: long): boolean
|
||||
public method removeAll(p0: java.util.Collection): boolean
|
||||
public static method removeAll-impl(p0: java.util.List, p1: java.util.Collection): boolean
|
||||
public method removeAt-XAcLw3A(p0: int): long
|
||||
public static method removeAt-XAcLw3A(p0: java.util.List, p1: int): long
|
||||
public method removeAt-JnfgTak(p0: int): long
|
||||
public static method removeAt-JnfgTak(p0: java.util.List, p1: int): long
|
||||
public method retainAll(p0: java.util.Collection): boolean
|
||||
public static method retainAll-impl(p0: java.util.List, p1: java.util.Collection): boolean
|
||||
public synthetic bridge method set(p0: int, p1: java.lang.Object): java.lang.Object
|
||||
public method set-_bimVNw(p0: int, p1: long): long
|
||||
public static method set-_bimVNw(p0: java.util.List, p1: int, p2: long): long
|
||||
public method set-Geu8JnU(p0: int, p1: long): long
|
||||
public static method set-Geu8JnU(p0: java.util.List, p1: int, p2: long): long
|
||||
public synthetic bridge method size(): int
|
||||
public method subList(p0: int, p1: int): java.util.List
|
||||
public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List
|
||||
|
||||
compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableMap.txt
Vendored
+6
-6
@@ -51,8 +51,8 @@ public final class InlineMutableMap {
|
||||
public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean
|
||||
public bridge final method get(p0: java.lang.Object): java.lang.Object
|
||||
public method get-FSIWiWE(p0: int): IV
|
||||
public static method get-FSIWiWE(p0: java.util.Map, p1: int): IV
|
||||
public method get-qgyy0Jc(p0: int): IV
|
||||
public static method get-qgyy0Jc(p0: java.util.Map, p1: int): IV
|
||||
public method getEntries(): java.util.Set
|
||||
public static method getEntries-impl(p0: java.util.Map): java.util.Set
|
||||
public method getKeys(): java.util.Set
|
||||
@@ -67,13 +67,13 @@ public final class InlineMutableMap {
|
||||
public static method isEmpty-impl(p0: java.util.Map): boolean
|
||||
public bridge final method keySet(): java.util.Set
|
||||
public synthetic bridge method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||
public method put-pjrbk2k(p0: int, p1: double): IV
|
||||
public static method put-pjrbk2k(p0: java.util.Map, p1: int, p2: double): IV
|
||||
public method put-eSoqwEg(p0: int, p1: double): IV
|
||||
public static method put-eSoqwEg(p0: java.util.Map, p1: int, p2: double): IV
|
||||
public method putAll(p0: java.util.Map): void
|
||||
public static method putAll-impl(p0: java.util.Map, p1: java.util.Map): void
|
||||
public bridge final method remove(p0: java.lang.Object): java.lang.Object
|
||||
public method remove-FSIWiWE(p0: int): IV
|
||||
public static method remove-FSIWiWE(p0: java.util.Map, p1: int): IV
|
||||
public method remove-qgyy0Jc(p0: int): IV
|
||||
public static method remove-qgyy0Jc(p0: java.util.Map, p1: int): IV
|
||||
public bridge final method size(): int
|
||||
public method toString(): java.lang.String
|
||||
public static method toString-impl(p0: java.util.Map): java.lang.String
|
||||
|
||||
+2
-2
@@ -50,8 +50,8 @@ public final class InlineMutableMapEntry {
|
||||
public method hashCode(): int
|
||||
public static method hashCode-impl(p0: java.util.Map$Entry): int
|
||||
public synthetic bridge method setValue(p0: java.lang.Object): java.lang.Object
|
||||
public method setValue-jbX5DO8(p0: double): double
|
||||
public static method setValue-jbX5DO8(p0: java.util.Map$Entry, p1: double): double
|
||||
public method setValue-cYiyq8k(p0: double): double
|
||||
public static method setValue-cYiyq8k(p0: java.util.Map$Entry, p1: double): double
|
||||
public method toString(): java.lang.String
|
||||
public static method toString-impl(p0: java.util.Map$Entry): java.lang.String
|
||||
public synthetic final method unbox-impl(): java.util.Map$Entry
|
||||
|
||||
+6
-6
@@ -51,8 +51,8 @@ public final class InlineMutableMap {
|
||||
public static method equals-impl(p0: java.util.Map, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: java.util.Map, p1: java.util.Map): boolean
|
||||
public synthetic bridge method get(p0: java.lang.Object): java.lang.Object
|
||||
public method get-FSIWiWE(p0: int): IV
|
||||
public static method get-FSIWiWE(p0: java.util.Map, p1: int): IV
|
||||
public method get-qgyy0Jc(p0: int): IV
|
||||
public static method get-qgyy0Jc(p0: java.util.Map, p1: int): IV
|
||||
public method getEntries(): java.util.Set
|
||||
public static method getEntries-impl(p0: java.util.Map): java.util.Set
|
||||
public method getKeys(): java.util.Set
|
||||
@@ -67,14 +67,14 @@ public final class InlineMutableMap {
|
||||
public static method isEmpty-impl(p0: java.util.Map): boolean
|
||||
public synthetic bridge method keySet(): java.util.Set
|
||||
public synthetic bridge method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||
public method put-pjrbk2k(p0: int, p1: double): IV
|
||||
public static method put-pjrbk2k(p0: java.util.Map, p1: int, p2: double): IV
|
||||
public method put-eSoqwEg(p0: int, p1: double): IV
|
||||
public static method put-eSoqwEg(p0: java.util.Map, p1: int, p2: double): IV
|
||||
public method putAll(p0: java.util.Map): void
|
||||
public static method putAll-impl(p0: java.util.Map, p1: java.util.Map): void
|
||||
public bridge final method remove(p0: java.lang.Object): IV
|
||||
public synthetic bridge method remove(p0: java.lang.Object): java.lang.Object
|
||||
public method remove-FSIWiWE(p0: int): IV
|
||||
public static method remove-FSIWiWE(p0: java.util.Map, p1: int): IV
|
||||
public method remove-qgyy0Jc(p0: int): IV
|
||||
public static method remove-qgyy0Jc(p0: java.util.Map, p1: int): IV
|
||||
public synthetic bridge method size(): int
|
||||
public method toString(): java.lang.String
|
||||
public static method toString-impl(p0: java.util.Map): java.lang.String
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class IC(val i: Int)
|
||||
|
||||
fun foo(i: Int, ic: IC) {}
|
||||
fun foo(i: Int?, ic: IC) {}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
@kotlin.Metadata
|
||||
public final class IC {
|
||||
// source: 'nullableAndNotNullPrimitive.kt'
|
||||
private final field i: int
|
||||
private synthetic method <init>(p0: int): void
|
||||
public synthetic final static method box-impl(p0: int): IC
|
||||
public static method constructor-impl(p0: int): int
|
||||
public method equals(p0: java.lang.Object): boolean
|
||||
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: int, p1: int): boolean
|
||||
public final method getI(): int
|
||||
public method hashCode(): int
|
||||
public static method hashCode-impl(p0: int): int
|
||||
public method toString(): java.lang.String
|
||||
public static method toString-impl(p0: int): java.lang.String
|
||||
public synthetic final method unbox-impl(): int
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class NullableAndNotNullPrimitiveKt {
|
||||
// source: 'nullableAndNotNullPrimitive.kt'
|
||||
public final static method foo-MSgPiiU(@org.jetbrains.annotations.Nullable p0: java.lang.Integer, p1: int): void
|
||||
public final static method foo-MSgPiiU(p0: int, p1: int): void
|
||||
}
|
||||
+2
-2
@@ -19,7 +19,7 @@ public final class A {
|
||||
@kotlin.Metadata
|
||||
public interface I {
|
||||
// source: 'kt42879.kt'
|
||||
public abstract method compute-GKOAj6k(p0: int): int
|
||||
public abstract method compute-WzO2ekY(p0: int): int
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
@@ -30,7 +30,7 @@ final class Kt42879Kt$g$1 {
|
||||
inner (anonymous) class Kt42879Kt$g$1
|
||||
static method <clinit>(): void
|
||||
method <init>(): void
|
||||
public final method compute-GKOAj6k(p0: int): int
|
||||
public final method compute-WzO2ekY(p0: int): int
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
|
||||
+1
-1
@@ -18,6 +18,6 @@ class B : A {
|
||||
override val i by Delegate()
|
||||
}
|
||||
|
||||
// 1 public final getValue-lPtA-2M\(Ljava/lang/Object;Lkotlin/reflect/KProperty;\)I
|
||||
// 1 public final getValue-Y6jMyTM\(Ljava/lang/Object;Lkotlin/reflect/KProperty;\)I
|
||||
// 1 public getI-lPtA-2M\(\)I
|
||||
// 1 public abstract getI-lPtA-2M\(\)I
|
||||
|
||||
+1
-1
@@ -28,6 +28,6 @@ inline class Delegate(val default: Int) {
|
||||
// 0 DelegateFactory\.unbox
|
||||
// 0 Delegate\.box
|
||||
// 0 Delegate\.unbox
|
||||
// 1 INVOKESTATIC DelegateFactory\.provideDelegate-ARVzKNs \(ILjava/lang/Object;Ljava/lang/Object;\)I
|
||||
// 1 INVOKESTATIC DelegateFactory\.provideDelegate-gy51yk8 \(ILjava/lang/Object;Ljava/lang/Object;\)I
|
||||
// 1 INVOKESTATIC Delegate\.getValue-impl \(ILjava/lang/Object;Ljava/lang/Object;\)I
|
||||
// 1 INVOKESTATIC Delegate\.setValue-impl \(ILjava/lang/Object;Ljava/lang/Object;I\)V
|
||||
+4
-4
@@ -13,7 +13,7 @@ suspend fun bar(p: P) {}
|
||||
// The mangled name for a suspend function includes the continuation parameter in the hash computation, but not the
|
||||
// default argument mask and handler.
|
||||
|
||||
// 1 public final static foo-zMJ7EWY\(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object;
|
||||
// 1 public static synthetic foo-zMJ7EWY\$default\(ILkotlin/coroutines/Continuation;ILjava/lang/Object;\)Ljava/lang/Object;
|
||||
// 1 INVOKESTATIC a/TestKt.foo-zMJ7EWY \(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object;
|
||||
// 1 public final static bar-zMJ7EWY\(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object;
|
||||
// 1 public final static foo-opU5HYo\(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object;
|
||||
// 1 public static synthetic foo-opU5HYo\$default\(ILkotlin/coroutines/Continuation;ILjava/lang/Object;\)Ljava/lang/Object;
|
||||
// 1 INVOKESTATIC a/TestKt.foo-opU5HYo \(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object;
|
||||
// 1 public final static bar-opU5HYo\(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object;
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
inline class IC(val i: Int)
|
||||
|
||||
fun foo(a: Any, ic: IC) {}
|
||||
fun foo(a: Any?, ic: IC) {}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
inline class IC(val i: Int)
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(a: Any, ic: IC)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(a: Any?, ic: IC)<!> {}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ a: kotlin.Any, /*1*/ ic: IC): kotlin.Unit
|
||||
public fun foo(/*0*/ a: kotlin.Any?, /*1*/ ic: IC): kotlin.Unit
|
||||
|
||||
public final inline class IC {
|
||||
public constructor IC(/*0*/ i: kotlin.Int)
|
||||
public final val i: kotlin.Int
|
||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
inline class IC(val i: Int)
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(a: Any, ic: IC)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(a: Any?, ic: IC)<!> {}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ a: kotlin.Any, /*1*/ ic: IC): kotlin.Unit
|
||||
public fun foo(/*0*/ a: kotlin.Any?, /*1*/ ic: IC): kotlin.Unit
|
||||
|
||||
public final inline class IC {
|
||||
public constructor IC(/*0*/ i: kotlin.Int)
|
||||
public final val i: kotlin.Int
|
||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -22,6 +22,6 @@ inline class SomeClass(val v: Int) {
|
||||
// jvm signature: (ILjava/lang/Object;)Ljava/lang/Object;
|
||||
// generic signature: <K:Ljava/lang/Object;>(ITK;)TK;
|
||||
|
||||
// method: SomeClass$Companion::comp-Uh6wWds
|
||||
// method: SomeClass$Companion::comp-aew-wRw
|
||||
// jvm signature: (ILjava/lang/Object;)Ljava/lang/Object;
|
||||
// generic signature: <T:Ljava/lang/Object;>(ITT;)TT;
|
||||
Vendored
+1
-1
@@ -21,6 +21,6 @@ object Test {
|
||||
// jvm signature: (I)V
|
||||
// generic signature: null
|
||||
|
||||
// method: Test::asAll--J2ODwA
|
||||
// method: Test::asAll-wqC9CcI
|
||||
// jvm signature: (ILjava/lang/Object;II)I
|
||||
// generic signature: null
|
||||
|
||||
@@ -12844,6 +12844,11 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTestWithFirVali
|
||||
runTest("compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt")
|
||||
public void testChangingNullabilityOfOrdinaryClassIsBinaryCompatibleChange() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/inlineClasses/changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("constructorsJvmSignaturesClash.kt")
|
||||
public void testConstructorsJvmSignaturesClash() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/inlineClasses/constructorsJvmSignaturesClash.kt");
|
||||
|
||||
Generated
+5
@@ -61,6 +61,11 @@ public class DiagnosticsTestWithJvmIrBackendGenerated extends AbstractDiagnostic
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/caseInProperties.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt")
|
||||
public void testChangingNullabilityOfOrdinaryClassIsBinaryCompatibleChange() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("vararg.kt")
|
||||
public void testVararg() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/vararg.kt");
|
||||
|
||||
Generated
+5
@@ -61,6 +61,11 @@ public class DiagnosticsTestWithOldJvmBackendGenerated extends AbstractDiagnosti
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/caseInProperties.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt")
|
||||
public void testChangingNullabilityOfOrdinaryClassIsBinaryCompatibleChange() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("vararg.kt")
|
||||
public void testVararg() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/vararg.kt");
|
||||
|
||||
Generated
+5
@@ -12839,6 +12839,11 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing
|
||||
runTest("compiler/testData/diagnostics/tests/inlineClasses/basicInlineClassDeclarationDisabled.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt")
|
||||
public void testChangingNullabilityOfOrdinaryClassIsBinaryCompatibleChange() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/inlineClasses/changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("constructorsJvmSignaturesClash.kt")
|
||||
public void testConstructorsJvmSignaturesClash() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/inlineClasses/constructorsJvmSignaturesClash.kt");
|
||||
|
||||
+5
@@ -15797,6 +15797,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt35234a.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithInlineClass.kt")
|
||||
public void testOverrideGenericWithInlineClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithInlineClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt")
|
||||
public void testOverrideGenericWithNullableInlineClassUpperBoundWithNonNullAny() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt");
|
||||
|
||||
+5
@@ -987,6 +987,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/nullabilityInExpansion.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("nullableAndNotNullPrimitive.kt")
|
||||
public void testNullableAndNotNullPrimitive() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/nullableAndNotNullPrimitive.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overridingGenericMethodWithInlineClassParameterType.kt")
|
||||
public void testOverridingGenericMethodWithInlineClassParameterType() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/overridingGenericMethodWithInlineClassParameterType.kt");
|
||||
|
||||
+5
@@ -15797,6 +15797,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt35234a.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithInlineClass.kt")
|
||||
public void testOverrideGenericWithInlineClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithInlineClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt")
|
||||
public void testOverrideGenericWithNullableInlineClassUpperBoundWithNonNullAny() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt");
|
||||
|
||||
+5
@@ -14397,6 +14397,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt35234a.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithInlineClass.kt")
|
||||
public void testOverrideGenericWithInlineClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithInlineClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt")
|
||||
public void testOverrideGenericWithNullableInlineClassUpperBoundWithNonNullAny() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt");
|
||||
|
||||
+5
@@ -957,6 +957,11 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/nullabilityInExpansion.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("nullableAndNotNullPrimitive.kt")
|
||||
public void testNullableAndNotNullPrimitive() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/nullableAndNotNullPrimitive.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overridingGenericMethodWithInlineClassParameterType.kt")
|
||||
public void testOverridingGenericMethodWithInlineClassParameterType() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/overridingGenericMethodWithInlineClassParameterType.kt");
|
||||
|
||||
Generated
+5
@@ -12392,6 +12392,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt35234a.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithInlineClass.kt")
|
||||
public void testOverrideGenericWithInlineClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithInlineClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt")
|
||||
public void testOverrideGenericWithNullableInlineClassUpperBoundWithNonNullAny() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt");
|
||||
|
||||
Generated
+5
@@ -12392,6 +12392,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt35234a.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithInlineClass.kt")
|
||||
public void testOverrideGenericWithInlineClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithInlineClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt")
|
||||
public void testOverrideGenericWithNullableInlineClassUpperBoundWithNonNullAny() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt");
|
||||
|
||||
+5
@@ -12457,6 +12457,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt35234a.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithInlineClass.kt")
|
||||
public void testOverrideGenericWithInlineClass() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithInlineClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt")
|
||||
public void testOverrideGenericWithNullableInlineClassUpperBoundWithNonNullAny() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/overrideGenericWithNullableInlineClassUpperBoundWithNonNullAny.kt");
|
||||
|
||||
Reference in New Issue
Block a user