JS: prohibit passing native interfaces to reified type parameters
This commit is contained in:
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
inline fun <reified T> foo(x: T) {
|
||||
println(x)
|
||||
}
|
||||
|
||||
@native interface I
|
||||
|
||||
@native class C : I
|
||||
|
||||
operator inline fun <reified T> C.plus(other: T) = this
|
||||
|
||||
fun bar() {
|
||||
foo(C())
|
||||
|
||||
val c: I = C()
|
||||
foo(<!NATIVE_INTERFACE_AS_REIFIED_TYPE_ARGUMENT!>c<!>)
|
||||
foo<<!NATIVE_INTERFACE_AS_REIFIED_TYPE_ARGUMENT!>I<!>>(C())
|
||||
|
||||
C() + <!NATIVE_INTERFACE_AS_REIFIED_TYPE_ARGUMENT!>c<!>
|
||||
}
|
||||
compiler/testData/diagnostics/testsWithJsStdLib/native/rtti/nativeInterfaceAsReifiedTypeArgument.txt
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
package
|
||||
|
||||
public fun bar(): kotlin.Unit
|
||||
public inline fun </*0*/ reified T> foo(/*0*/ x: T): kotlin.Unit
|
||||
public operator inline fun </*0*/ reified T> C.plus(/*0*/ other: T): C
|
||||
|
||||
@kotlin.js.native() public final class C : I {
|
||||
public constructor C()
|
||||
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 open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.js.native() public interface I {
|
||||
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 open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user