Load Java declarations which reference FunctionN as Deprecated.Error
#KT-25855 Fixed
This commit is contained in:
+3
@@ -61,8 +61,11 @@ fun box(): String {
|
||||
Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?,
|
||||
Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?,
|
||||
Unit> = { _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ -> }
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
J.test(lambda as kotlin.jvm.functions.FunctionN<Unit>)
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
J.test(::foo as kotlin.jvm.functions.FunctionN<Unit>)
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
J.test(Fun() as kotlin.jvm.functions.FunctionN<Unit>)
|
||||
return "OK"
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ fun call(f: (A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
val f = J.FIELD as Function30<
|
||||
Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?,
|
||||
Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?,
|
||||
@@ -48,6 +49,7 @@ fun box(): String {
|
||||
if (f is Function31<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>) return "Fail field 31"
|
||||
if (call(f) != "OK") return "Fail field call"
|
||||
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
val m = J.getViaMethod() as Function30<
|
||||
Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?,
|
||||
Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?, Any?,
|
||||
|
||||
+2
@@ -50,7 +50,9 @@ fun Any.g(
|
||||
): Any = Any()
|
||||
|
||||
fun box(): String {
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
Test.test(::f as kotlin.jvm.functions.FunctionN<Any>)
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
Test.test(Any::g as kotlin.jvm.functions.FunctionN<Any>)
|
||||
return "OK"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
// !DIAGNOSTICS: -UNUSED_ANONYMOUS_PARAMETER
|
||||
|
||||
// FILE: KI.kt
|
||||
|
||||
interface KI {
|
||||
fun manyParams(x: (String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String) -> Unit)
|
||||
}
|
||||
|
||||
// FILE: A.java
|
||||
|
||||
import kotlin.jvm.functions.FunctionN;
|
||||
|
||||
public class A implements KI {
|
||||
public FunctionN<?> field;
|
||||
|
||||
public A(FunctionN<?> w) {}
|
||||
|
||||
public void foo(FunctionN<String> x) {
|
||||
|
||||
}
|
||||
|
||||
public FunctionN<?> bar() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void baz(java.util.List<FunctionN<?>> z) {
|
||||
|
||||
}
|
||||
|
||||
public void manyParams(FunctionN<Unit> x) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
fun <T> any(): T = null!!
|
||||
|
||||
fun main() {
|
||||
val a: A = <!DEPRECATION_ERROR!>A<!>(null)
|
||||
|
||||
a.<!DEPRECATION_ERROR!>field<!>.hashCode();
|
||||
a.<!DEPRECATION_ERROR!>field<!> = null;
|
||||
|
||||
a.<!DEPRECATION_ERROR!>foo<!>(null)
|
||||
a.<!DEPRECATION_ERROR!>bar<!>()
|
||||
a.<!DEPRECATION_ERROR!>baz<!>(listOf())
|
||||
|
||||
a.<!DEPRECATION_ERROR!>manyParams<!>(null)
|
||||
a.<!NONE_APPLICABLE!>manyParams<!>(any<kotlin.jvm.functions.FunctionN<Unit>>())
|
||||
|
||||
// Potentially, this would have better to forbid calling manyParams, too.
|
||||
// But it might be complicated because we need to match that it is an override
|
||||
// Seems to be fine because `A::manyParams` is anyway an override in JVM and can be called with (a as K)
|
||||
a.manyParams {
|
||||
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32 ->
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package
|
||||
|
||||
public fun </*0*/ T> any(): T
|
||||
public fun main(): kotlin.Unit
|
||||
|
||||
public open class A : KI {
|
||||
public constructor A(/*0*/ w: kotlin.jvm.functions.FunctionN<*>!)
|
||||
public final var field: kotlin.jvm.functions.FunctionN<*>!
|
||||
public open fun bar(): kotlin.jvm.functions.FunctionN<*>!
|
||||
public open fun baz(/*0*/ z: kotlin.collections.(Mutable)List<kotlin.jvm.functions.FunctionN<*>!>!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ x: kotlin.jvm.functions.FunctionN<kotlin.String!>!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public abstract override /*1*/ /*fake_override*/ fun manyParams(/*0*/ x: (kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String) -> kotlin.Unit): kotlin.Unit
|
||||
public open fun manyParams(/*0*/ x: kotlin.jvm.functions.FunctionN<Unit!>!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface KI {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public abstract fun manyParams(/*0*/ x: (kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String, kotlin.String) -> kotlin.Unit): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user