Fix stdlib compilation after updated @JvmName check

Previously, extension receiver type was not taken into account when
checking for @JvmName annotation applicability to possibly mangled
functions (such functions, however, were mangled).
This bug was fixed, but, unfortunately, not before such functions were
added to stdlib ('sumOf' family).
This commit is contained in:
Dmitry Petrov
2020-06-03 20:20:31 +03:00
parent 202bbdf8dd
commit de25359a90
10 changed files with 48 additions and 10 deletions
@@ -24,4 +24,7 @@ class C {
@JvmName("test")
fun returnsKotlinResult(a: Result<Int>): Result<Int> = a
}
}
@JvmName("extensionFun")
fun Foo.extensionFun() {}
@@ -24,4 +24,7 @@ class C {
<!INAPPLICABLE_JVM_NAME!>@JvmName("test")<!>
fun returnsKotlinResult(a: Result<Int>): Result<Int> = a
}
}
<!INAPPLICABLE_JVM_NAME!>@JvmName("extensionFun")<!>
fun Foo.extensionFun() {}
@@ -4,6 +4,7 @@ package
@kotlin.jvm.JvmName(name = "good") public fun baz(/*0*/ r: kotlin.Result<kotlin.Int>): kotlin.Unit
@kotlin.jvm.JvmName(name = "test") public fun returnsInlineClass(): Foo
@kotlin.jvm.JvmName(name = "test") public fun returnsKotlinResult(/*0*/ a: kotlin.Result<kotlin.Int>): kotlin.Result<kotlin.Int>
@kotlin.jvm.JvmName(name = "extensionFun") public fun Foo.extensionFun(): kotlin.Unit
public final class C {
public constructor C()
+2 -2
View File
@@ -40,8 +40,8 @@
public open override /*1*/ fun toString(): kotlin.String
public companion object Companion {
@kotlin.internal.InlineOnly public final inline fun </*0*/ T> failure(/*0*/ exception: kotlin.Throwable): kotlin.Result<T>
@kotlin.internal.InlineOnly public final inline fun </*0*/ T> success(/*0*/ value: T): kotlin.Result<T>
@kotlin.internal.InlineOnly @kotlin.jvm.JvmName(name = "failure") public final inline fun </*0*/ T> failure(/*0*/ exception: kotlin.Throwable): kotlin.Result<T>
@kotlin.internal.InlineOnly @kotlin.jvm.JvmName(name = "success") public final inline fun </*0*/ T> success(/*0*/ value: T): kotlin.Result<T>
}
}
+2 -2
View File
@@ -1,9 +1,9 @@
package kotlin.reflect
@kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalStdlibApi public inline fun </*0*/ reified T> typeOf(): kotlin.reflect.KType
@kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalStdlibApi @kotlin.internal.LowPriorityInOverloadResolution public fun </*0*/ T : kotlin.Any> kotlin.reflect.KClass<T>.cast(/*0*/ value: kotlin.Any?): T
@kotlin.SinceKotlin(version = "1.4") @kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class}) @kotlin.internal.LowPriorityInOverloadResolution public fun </*0*/ T : kotlin.Any> kotlin.reflect.KClass<T>.cast(/*0*/ value: kotlin.Any?): T
@kotlin.reflect.ExperimentalAssociatedObjects public inline fun </*0*/ reified T : kotlin.Annotation> kotlin.reflect.KClass<*>.findAssociatedObject(): kotlin.Any?
@kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalStdlibApi @kotlin.internal.LowPriorityInOverloadResolution public fun </*0*/ T : kotlin.Any> kotlin.reflect.KClass<T>.safeCast(/*0*/ value: kotlin.Any?): T?
@kotlin.SinceKotlin(version = "1.4") @kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class}) @kotlin.internal.LowPriorityInOverloadResolution public fun </*0*/ T : kotlin.Any> kotlin.reflect.KClass<T>.safeCast(/*0*/ value: kotlin.Any?): T?
@kotlin.reflect.ExperimentalAssociatedObjects @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.ANNOTATION_CLASS}) public final annotation class AssociatedObjectKey : kotlin.Annotation {
/*primary*/ public constructor AssociatedObjectKey()
+2 -2
View File
@@ -41,8 +41,8 @@
public open override /*1*/ fun toString(): kotlin.String
public companion object Companion {
@kotlin.internal.InlineOnly public final inline fun </*0*/ T> failure(/*0*/ exception: kotlin.Throwable): kotlin.Result<T>
@kotlin.internal.InlineOnly public final inline fun </*0*/ T> success(/*0*/ value: T): kotlin.Result<T>
@kotlin.internal.InlineOnly @kotlin.jvm.JvmName(name = "failure") public final inline fun </*0*/ T> failure(/*0*/ exception: kotlin.Throwable): kotlin.Result<T>
@kotlin.internal.InlineOnly @kotlin.jvm.JvmName(name = "success") public final inline fun </*0*/ T> success(/*0*/ value: T): kotlin.Result<T>
}
}
+2 -2
View File
@@ -1,9 +1,9 @@
package kotlin.reflect
@kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalStdlibApi public inline fun </*0*/ reified T> typeOf(): kotlin.reflect.KType
@kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalStdlibApi @kotlin.internal.LowPriorityInOverloadResolution public fun </*0*/ T : kotlin.Any> kotlin.reflect.KClass<T>.cast(/*0*/ value: kotlin.Any?): T
@kotlin.SinceKotlin(version = "1.4") @kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class}) @kotlin.internal.LowPriorityInOverloadResolution public fun </*0*/ T : kotlin.Any> kotlin.reflect.KClass<T>.cast(/*0*/ value: kotlin.Any?): T
@kotlin.reflect.ExperimentalAssociatedObjects public inline fun </*0*/ reified T : kotlin.Annotation> kotlin.reflect.KClass<*>.findAssociatedObject(): kotlin.Any?
@kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalStdlibApi @kotlin.internal.LowPriorityInOverloadResolution public fun </*0*/ T : kotlin.Any> kotlin.reflect.KClass<T>.safeCast(/*0*/ value: kotlin.Any?): T?
@kotlin.SinceKotlin(version = "1.4") @kotlin.WasExperimental(markerClass = {kotlin.ExperimentalStdlibApi::class}) @kotlin.internal.LowPriorityInOverloadResolution public fun </*0*/ T : kotlin.Any> kotlin.reflect.KClass<T>.safeCast(/*0*/ value: kotlin.Any?): T?
@kotlin.reflect.ExperimentalAssociatedObjects @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.ANNOTATION_CLASS}) public final annotation class AssociatedObjectKey : kotlin.Annotation {
/*primary*/ public constructor AssociatedObjectKey()
@@ -9304,6 +9304,7 @@ public inline fun UShortArray.sumByDouble(selector: (UShort) -> Double): Double
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfDouble")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9321,6 +9322,7 @@ public inline fun UIntArray.sumOf(selector: (UInt) -> Double): Double {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfDouble")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9338,6 +9340,7 @@ public inline fun ULongArray.sumOf(selector: (ULong) -> Double): Double {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfDouble")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9355,6 +9358,7 @@ public inline fun UByteArray.sumOf(selector: (UByte) -> Double): Double {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfDouble")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9372,6 +9376,7 @@ public inline fun UShortArray.sumOf(selector: (UShort) -> Double): Double {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfInt")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9389,6 +9394,7 @@ public inline fun UIntArray.sumOf(selector: (UInt) -> Int): Int {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfInt")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9406,6 +9412,7 @@ public inline fun ULongArray.sumOf(selector: (ULong) -> Int): Int {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfInt")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9423,6 +9430,7 @@ public inline fun UByteArray.sumOf(selector: (UByte) -> Int): Int {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfInt")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9440,6 +9448,7 @@ public inline fun UShortArray.sumOf(selector: (UShort) -> Int): Int {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfLong")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9457,6 +9466,7 @@ public inline fun UIntArray.sumOf(selector: (UInt) -> Long): Long {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfLong")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9474,6 +9484,7 @@ public inline fun ULongArray.sumOf(selector: (ULong) -> Long): Long {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfLong")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9491,6 +9502,7 @@ public inline fun UByteArray.sumOf(selector: (UByte) -> Long): Long {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfLong")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9508,6 +9520,7 @@ public inline fun UShortArray.sumOf(selector: (UShort) -> Long): Long {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfUInt")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9525,6 +9538,7 @@ public inline fun UIntArray.sumOf(selector: (UInt) -> UInt): UInt {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfUInt")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9542,6 +9556,7 @@ public inline fun ULongArray.sumOf(selector: (ULong) -> UInt): UInt {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfUInt")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9559,6 +9574,7 @@ public inline fun UByteArray.sumOf(selector: (UByte) -> UInt): UInt {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfUInt")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9576,6 +9592,7 @@ public inline fun UShortArray.sumOf(selector: (UShort) -> UInt): UInt {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfULong")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9593,6 +9610,7 @@ public inline fun UIntArray.sumOf(selector: (UInt) -> ULong): ULong {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfULong")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9610,6 +9628,7 @@ public inline fun ULongArray.sumOf(selector: (ULong) -> ULong): ULong {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfULong")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -9627,6 +9646,7 @@ public inline fun UByteArray.sumOf(selector: (UByte) -> ULong): ULong {
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfULong")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -291,6 +291,7 @@ public fun UShortArray.binarySearch(element: UShort, fromIndex: Int = 0, toIndex
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfBigDecimal")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -308,6 +309,7 @@ public inline fun UIntArray.sumOf(selector: (UInt) -> java.math.BigDecimal): jav
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfBigDecimal")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -325,6 +327,7 @@ public inline fun ULongArray.sumOf(selector: (ULong) -> java.math.BigDecimal): j
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfBigDecimal")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -342,6 +345,7 @@ public inline fun UByteArray.sumOf(selector: (UByte) -> java.math.BigDecimal): j
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfBigDecimal")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -359,6 +363,7 @@ public inline fun UShortArray.sumOf(selector: (UShort) -> java.math.BigDecimal):
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfBigInteger")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -376,6 +381,7 @@ public inline fun UIntArray.sumOf(selector: (UInt) -> java.math.BigInteger): jav
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfBigInteger")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -393,6 +399,7 @@ public inline fun ULongArray.sumOf(selector: (ULong) -> java.math.BigInteger): j
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfBigInteger")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -410,6 +417,7 @@ public inline fun UByteArray.sumOf(selector: (UByte) -> java.math.BigInteger): j
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfBigInteger")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
@@ -264,6 +264,9 @@ object Aggregates : TemplateGroupBase() {
}
annotation("@OptIn(kotlin.experimental.ExperimentalTypeInference::class)")
annotation("@OverloadResolutionByLambdaReturnType")
specialFor(ArraysOfUnsigned) {
annotation("""@Suppress("INAPPLICABLE_JVM_NAME")""")
}
annotation("""@kotlin.jvm.JvmName("sumOf$typeShortName")""") // should not be needed if inline return type is mangled
if (selectorType.startsWith("U"))
annotation("@ExperimentalUnsignedTypes")