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).
diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.fir.kt
index 5e90650..aaf1391 100644
--- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.fir.kt
+++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.fir.kt
@@ -24,4 +24,7 @@
@JvmName("test")
fun returnsKotlinResult(a: Result<Int>): Result<Int> = a
-}
\ No newline at end of file
+}
+
+@JvmName("extensionFun")
+fun Foo.extensionFun() {}
\ No newline at end of file
diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.kt
index d97155c..b58fac7 100644
--- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.kt
+++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.kt
@@ -24,4 +24,7 @@
<!INAPPLICABLE_JVM_NAME!>@JvmName("test")<!>
fun returnsKotlinResult(a: Result<Int>): Result<Int> = a
-}
\ No newline at end of file
+}
+
+<!INAPPLICABLE_JVM_NAME!>@JvmName("extensionFun")<!>
+fun Foo.extensionFun() {}
\ No newline at end of file
diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.txt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.txt
index 3de842e..ba26ad1 100644
--- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.txt
+++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmNameOnMangledNames.txt
@@ -4,6 +4,7 @@
@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()
diff --git a/js/js.translator/testData/api/stdlib-ir/kotlin-1.kt b/js/js.translator/testData/api/stdlib-ir/kotlin-1.kt
index 8759a62..f412785 100644
--- a/js/js.translator/testData/api/stdlib-ir/kotlin-1.kt
+++ b/js/js.translator/testData/api/stdlib-ir/kotlin-1.kt
@@ -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>
}
}
diff --git a/js/js.translator/testData/api/stdlib-ir/kotlin.reflect.kt b/js/js.translator/testData/api/stdlib-ir/kotlin.reflect.kt
index 3ca1e4e..9383e3e 100644
--- a/js/js.translator/testData/api/stdlib-ir/kotlin.reflect.kt
+++ b/js/js.translator/testData/api/stdlib-ir/kotlin.reflect.kt
@@ -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()
diff --git a/js/js.translator/testData/api/stdlib/kotlin-1.kt b/js/js.translator/testData/api/stdlib/kotlin-1.kt
index 0a54662..c9717b4 100644
--- a/js/js.translator/testData/api/stdlib/kotlin-1.kt
+++ b/js/js.translator/testData/api/stdlib/kotlin-1.kt
@@ -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>
}
}
diff --git a/js/js.translator/testData/api/stdlib/kotlin.reflect.kt b/js/js.translator/testData/api/stdlib/kotlin.reflect.kt
index d6e9f82..071ca03 100644
--- a/js/js.translator/testData/api/stdlib/kotlin.reflect.kt
+++ b/js/js.translator/testData/api/stdlib/kotlin.reflect.kt
@@ -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()
diff --git a/libraries/stdlib/common/src/generated/_UArrays.kt b/libraries/stdlib/common/src/generated/_UArrays.kt
index 38cf9a2..7e61ccd 100644
--- a/libraries/stdlib/common/src/generated/_UArrays.kt
+++ b/libraries/stdlib/common/src/generated/_UArrays.kt
@@ -9304,6 +9304,7 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
+@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfULong")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
diff --git a/libraries/stdlib/jvm/src/generated/_UArraysJvm.kt b/libraries/stdlib/jvm/src/generated/_UArraysJvm.kt
index f5d2f7a..18b289e 100644
--- a/libraries/stdlib/jvm/src/generated/_UArraysJvm.kt
+++ b/libraries/stdlib/jvm/src/generated/_UArraysJvm.kt
@@ -291,6 +291,7 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
+@Suppress("INAPPLICABLE_JVM_NAME")
@kotlin.jvm.JvmName("sumOfBigInteger")
@ExperimentalUnsignedTypes
@kotlin.internal.InlineOnly
diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Aggregates.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Aggregates.kt
index 44f43c1..33840d0 100644
--- a/libraries/tools/kotlin-stdlib-gen/src/templates/Aggregates.kt
+++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Aggregates.kt
@@ -264,6 +264,9 @@
}
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")