[tests][FIR][checkers][Wasm] Improve test coverage for WRONG_JS_INTEROP_TYPE
This commit is contained in:
committed by
Space Team
parent
eaa50fbf37
commit
b165ff675b
+28
@@ -0,0 +1,28 @@
|
|||||||
|
// OPT_IN: kotlin.js.ExperimentalJsExport
|
||||||
|
|
||||||
|
external interface EI
|
||||||
|
external open class EC
|
||||||
|
external object EO
|
||||||
|
|
||||||
|
external fun complexFunctionTypesWithNonNullTypes(
|
||||||
|
f1: (Boolean, Byte, Short, Int, Long, Float, Double, Char, String, EI, EC, EO) -> Unit,
|
||||||
|
f2: (Boolean) -> ((Int) -> ((Float) -> ((String) -> EI))),
|
||||||
|
f3: ((((Boolean) -> Int) -> Float) -> String) -> EI,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun complexFunctionTypesWithNullableTypes(
|
||||||
|
f1: ((Boolean?, Byte?, Short?, Int?, Long?, Float?, Double?, Char?, String?, EI?, EC?, EO?) -> Unit)?,
|
||||||
|
f2: ((Boolean?) -> ((Int?) -> ((Float?) -> ((String?) -> EI)?)?)?)?,
|
||||||
|
f3: ((((((((Boolean?) -> Int?)?) -> Float?)?) -> String?)?) -> EI?)?,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun complexFunctionTypesWithWrongTypes(
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>f1: ((Any?, Byte?, Unit?, Int?, CharSequence?, Float?, IntArray?, Char?, String?, EI?, EC?, EO?) -> Unit)?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>f2: ((Boolean?) -> ((Any?) -> ((Float?) -> ((CharSequence?) -> EI)?)?)?)?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>f3: ((((((((Boolean?) -> Unit?)?) -> Float?)?) -> IntArray?)?) -> EI?)?<!>,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun <T> typeParameterWithUpperBoundsWithDifferentJsInteropCorrectness(arg: T): T where T : EI, T : <!WRONG_JS_INTEROP_TYPE!>Any<!>
|
||||||
|
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>fun jsCodeFunctionWithBlockBody(<!WRONG_JS_INTEROP_TYPE!>x: Any<!>): Any<!> { js("return x;") }
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>val jsCodeProperty: Any<!> = js("1")
|
||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
// OPT_IN: kotlin.js.ExperimentalJsExport
|
||||||
|
|
||||||
|
external interface EI
|
||||||
|
external open class EC
|
||||||
|
external object EO
|
||||||
|
|
||||||
|
external fun complexFunctionTypesWithNonNullTypes(
|
||||||
|
f1: (Boolean, Byte, Short, Int, Long, Float, Double, Char, String, EI, EC, EO) -> Unit,
|
||||||
|
f2: (Boolean) -> ((Int) -> ((Float) -> ((String) -> EI))),
|
||||||
|
f3: ((((Boolean) -> Int) -> Float) -> String) -> EI,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun complexFunctionTypesWithNullableTypes(
|
||||||
|
f1: ((Boolean?, Byte?, Short?, Int?, Long?, Float?, Double?, Char?, String?, EI?, EC?, EO?) -> Unit)?,
|
||||||
|
f2: ((Boolean?) -> ((Int?) -> ((Float?) -> ((String?) -> EI)?)?)?)?,
|
||||||
|
f3: ((((((((Boolean?) -> Int?)?) -> Float?)?) -> String?)?) -> EI?)?,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun complexFunctionTypesWithWrongTypes(
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>f1: ((Any?, Byte?, Unit?, Int?, CharSequence?, Float?, IntArray?, Char?, String?, EI?, EC?, EO?) -> Unit)?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>f2: ((Boolean?) -> ((Any?) -> ((Float?) -> ((CharSequence?) -> EI)?)?)?)?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>f3: ((((((((Boolean?) -> Unit?)?) -> Float?)?) -> IntArray?)?) -> EI?)?<!>,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun <<!WRONG_JS_INTEROP_TYPE!>T<!>> typeParameterWithUpperBoundsWithDifferentJsInteropCorrectness(arg: T): T where T : EI, T : Any
|
||||||
|
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>fun jsCodeFunctionWithBlockBody(<!WRONG_JS_INTEROP_TYPE!>x: Any<!>): Any<!> { js("return x;") }
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>val jsCodeProperty: Any<!> = js("1")
|
||||||
@@ -0,0 +1,365 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
|
|
||||||
|
// OPT_IN: kotlin.js.ExperimentalJsExport
|
||||||
|
// OPT_IN: kotlin.ExperimentalUnsignedTypes
|
||||||
|
// DIAGNOSTICS: -FINAL_UPPER_BOUND, -UNUSED_PARAMETER
|
||||||
|
// DIAGNOSTICS: -INLINE_CLASS_IN_EXTERNAL_DECLARATION, -NON_EXPORTABLE_TYPE
|
||||||
|
|
||||||
|
external interface ExternalInterface
|
||||||
|
external open class ExternalOpenClass
|
||||||
|
external object ExternalObject
|
||||||
|
|
||||||
|
|
||||||
|
external fun correctJsInteropTypes(
|
||||||
|
// primitive types
|
||||||
|
boolean: Boolean,
|
||||||
|
char: Char,
|
||||||
|
byte: Byte,
|
||||||
|
short: Short,
|
||||||
|
int: Int,
|
||||||
|
long: Long,
|
||||||
|
float: Float,
|
||||||
|
double: Double,
|
||||||
|
// unsigned integer types
|
||||||
|
uByte: UByte,
|
||||||
|
uShort: UShort,
|
||||||
|
uInt: UInt,
|
||||||
|
uLong: ULong,
|
||||||
|
// string types
|
||||||
|
string: String,
|
||||||
|
// function types
|
||||||
|
function: () -> Unit,
|
||||||
|
// external types
|
||||||
|
externalInterface: ExternalInterface,
|
||||||
|
externalOpenClass: ExternalOpenClass,
|
||||||
|
externalObject: ExternalObject,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun correctNullableJsInteropTypes(
|
||||||
|
// primitive types
|
||||||
|
boolean: Boolean?,
|
||||||
|
char: Char?,
|
||||||
|
byte: Byte?,
|
||||||
|
short: Short?,
|
||||||
|
int: Int?,
|
||||||
|
long: Long?,
|
||||||
|
float: Float?,
|
||||||
|
double: Double?,
|
||||||
|
// unsigned integer types
|
||||||
|
uByte: UByte?,
|
||||||
|
uShort: UShort?,
|
||||||
|
uInt: UInt?,
|
||||||
|
uLong: ULong?,
|
||||||
|
// string types
|
||||||
|
string: String?,
|
||||||
|
// function types
|
||||||
|
function: (() -> Unit)?,
|
||||||
|
// external types
|
||||||
|
externalInterface: ExternalInterface?,
|
||||||
|
externalOpenClass: ExternalOpenClass?,
|
||||||
|
externalObject: ExternalObject?,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
// correct JS interop types as return types
|
||||||
|
|
||||||
|
// Unit and Nothing
|
||||||
|
external fun unitAsReturnType(): Unit
|
||||||
|
external fun nothingAsReturnType(): Nothing
|
||||||
|
|
||||||
|
// primitive types
|
||||||
|
external fun booleanAsReturnType(): Boolean
|
||||||
|
external fun charAsReturnType(): Char
|
||||||
|
external fun byteAsReturnType(): Byte
|
||||||
|
external fun shortAsReturnType(): Short
|
||||||
|
external fun intAsReturnType(): Int
|
||||||
|
external fun longAsReturnType(): Long
|
||||||
|
external fun floatAsReturnType(): Float
|
||||||
|
external fun doubleAsReturnType(): Double
|
||||||
|
|
||||||
|
// unsigned integer types
|
||||||
|
external fun uByteAsReturnType(): UByte
|
||||||
|
external fun uShortAsReturnType(): UShort
|
||||||
|
external fun uIntAsReturnType(): UInt
|
||||||
|
external fun uLongAsReturnType(): ULong
|
||||||
|
|
||||||
|
// string types
|
||||||
|
external fun stringAsReturnType(): String
|
||||||
|
|
||||||
|
// function types
|
||||||
|
external fun functionAsReturnType(): () -> Unit
|
||||||
|
|
||||||
|
// external types
|
||||||
|
external fun externalInterfaceAsReturnType(): ExternalInterface
|
||||||
|
external fun externalOpenClassAsReturnType(): ExternalOpenClass
|
||||||
|
external fun externalObjectAsReturnType(): ExternalObject
|
||||||
|
|
||||||
|
|
||||||
|
// correct JS interop types as vararg parameter types
|
||||||
|
|
||||||
|
// primitive types
|
||||||
|
external fun booleanAsVarargParameterType(vararg args: Boolean)
|
||||||
|
external fun charAsVarargParameterType(vararg args: Char)
|
||||||
|
external fun byteAsVarargParameterType(vararg args: Byte)
|
||||||
|
external fun shortAsVarargParameterType(vararg args: Short)
|
||||||
|
external fun intAsVarargParameterType(vararg args: Int)
|
||||||
|
external fun longAsVarargParameterType(vararg args: Long)
|
||||||
|
external fun floatAsVarargParameterType(vararg args: Float)
|
||||||
|
external fun doubleAsVarargParameterType(vararg args: Double)
|
||||||
|
|
||||||
|
// unsigned integer types
|
||||||
|
external fun uByteAsVarargParameterType(vararg args: UByte)
|
||||||
|
external fun uShortAsVarargParameterType(vararg args: UShort)
|
||||||
|
external fun uIntAsVarargParameterType(vararg args: UInt)
|
||||||
|
external fun uLongAsVarargParameterType(vararg args: ULong)
|
||||||
|
|
||||||
|
// string types
|
||||||
|
external fun stringAsVarargParameterType(vararg args: String)
|
||||||
|
|
||||||
|
// function types
|
||||||
|
external fun functionAsVarargParameterType(vararg args: () -> Unit)
|
||||||
|
|
||||||
|
// external types
|
||||||
|
external fun externalInterfaceAsVarargParameterType(vararg args: ExternalInterface)
|
||||||
|
external fun externalOpenClassAsVarargParameterType(vararg args: ExternalOpenClass)
|
||||||
|
external fun externalObjectAsVarargParameterType(vararg args: ExternalObject)
|
||||||
|
|
||||||
|
|
||||||
|
external fun <
|
||||||
|
// primitive types
|
||||||
|
TBoolean: Boolean,
|
||||||
|
TChar: Char,
|
||||||
|
TByte: Byte,
|
||||||
|
TShort: Short,
|
||||||
|
TInt: Int,
|
||||||
|
TLong: Long,
|
||||||
|
TFloat: Float,
|
||||||
|
TDouble: Double,
|
||||||
|
// unsigned integer types
|
||||||
|
TUByte: UByte,
|
||||||
|
TUShort: UShort,
|
||||||
|
TUInt: UInt,
|
||||||
|
TULong: ULong,
|
||||||
|
// string types
|
||||||
|
TString: String,
|
||||||
|
// function types
|
||||||
|
TFunction: () -> Unit,
|
||||||
|
// external types
|
||||||
|
TExternalInterface: ExternalInterface,
|
||||||
|
TExternalOpenClass: ExternalOpenClass,
|
||||||
|
TExternalObject: ExternalObject,
|
||||||
|
// correct type parameter
|
||||||
|
TCorrectTypeParameter: TExternalInterface
|
||||||
|
> correctJsInteropTypesAsFunctionTypeParameterUpperBounds(
|
||||||
|
boolean: TBoolean,
|
||||||
|
char: TChar,
|
||||||
|
byte: TByte,
|
||||||
|
short: TShort,
|
||||||
|
int: TInt,
|
||||||
|
long: TLong,
|
||||||
|
float: TFloat,
|
||||||
|
double: TDouble,
|
||||||
|
uByte: TUByte,
|
||||||
|
uShort: TUShort,
|
||||||
|
uInt: TUInt,
|
||||||
|
uLong: TULong,
|
||||||
|
string: TString,
|
||||||
|
function: TFunction,
|
||||||
|
externalInterface: TExternalInterface,
|
||||||
|
externalOpenClass: TExternalOpenClass,
|
||||||
|
externalObject: TExternalObject,
|
||||||
|
correctTypeParameter: TCorrectTypeParameter
|
||||||
|
)
|
||||||
|
|
||||||
|
external class CorrectJsInteropTypesAsClassTypeParameterUpperBounds<
|
||||||
|
// primitive types
|
||||||
|
TBoolean: Boolean,
|
||||||
|
TChar: Char,
|
||||||
|
TByte: Byte,
|
||||||
|
TShort: Short,
|
||||||
|
TInt: Int,
|
||||||
|
TLong: Long,
|
||||||
|
TFloat: Float,
|
||||||
|
TDouble: Double,
|
||||||
|
// unsigned integer types
|
||||||
|
TUByte: UByte,
|
||||||
|
TUShort: UShort,
|
||||||
|
TUInt: UInt,
|
||||||
|
TULong: ULong,
|
||||||
|
// string types
|
||||||
|
TString: String,
|
||||||
|
// function types
|
||||||
|
TFunction: () -> Unit,
|
||||||
|
// external types
|
||||||
|
TExternalInterface: ExternalInterface,
|
||||||
|
TExternalOpenClass: ExternalOpenClass,
|
||||||
|
TExternalObject: ExternalObject,
|
||||||
|
// correct type parameter
|
||||||
|
TCorrectTypeParameter: TExternalInterface
|
||||||
|
>
|
||||||
|
|
||||||
|
|
||||||
|
// correct JS interop types as property types
|
||||||
|
|
||||||
|
// primitive types
|
||||||
|
external val booleanProperty: Boolean
|
||||||
|
external val charProperty: Char
|
||||||
|
external val byteProperty: Byte
|
||||||
|
external val shortProperty: Short
|
||||||
|
external val intProperty: Int
|
||||||
|
external val longProperty: Long
|
||||||
|
external val floatProperty: Float
|
||||||
|
external val doubleProperty: Double
|
||||||
|
|
||||||
|
// unsigned integer types
|
||||||
|
external val uByteProperty: UByte
|
||||||
|
external val uShortProperty: UShort
|
||||||
|
external val uIntProperty: UInt
|
||||||
|
external val uLongProperty: ULong
|
||||||
|
|
||||||
|
// string types
|
||||||
|
external val stringProperty: String
|
||||||
|
|
||||||
|
// function types
|
||||||
|
external val functionProperty: () -> Unit
|
||||||
|
|
||||||
|
// external types
|
||||||
|
external val externalInterfaceProperty: ExternalInterface
|
||||||
|
external val externalOpenClassProperty: ExternalOpenClass
|
||||||
|
external val externalObjectProperty: ExternalObject
|
||||||
|
|
||||||
|
|
||||||
|
external fun correctJsInteropTypesAsFunctionTypeParameterTypes(
|
||||||
|
primitiveTypes: (Boolean, Char, Byte, Short, Int, Long, Float, Double) -> Unit,
|
||||||
|
unsignedIntegerTypes: (UByte, UShort, UInt, ULong) -> Unit,
|
||||||
|
string: (String) -> Unit,
|
||||||
|
function: (() -> Unit) -> Unit,
|
||||||
|
externalTypes: (ExternalInterface, ExternalOpenClass, ExternalObject) -> Unit,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun correctJsInteropTypesAsFunctionTypeReturnTypes(
|
||||||
|
// Unit and Nothing
|
||||||
|
unit: () -> Unit,
|
||||||
|
nothing: () -> Nothing,
|
||||||
|
// primitive types
|
||||||
|
boolean: () -> Boolean,
|
||||||
|
char: () -> Char,
|
||||||
|
byte: () -> Byte,
|
||||||
|
short: () -> Short,
|
||||||
|
int: () -> Int,
|
||||||
|
long: () -> Long,
|
||||||
|
float: () -> Float,
|
||||||
|
double: () -> Double,
|
||||||
|
// unsigned integer types
|
||||||
|
uByte: () -> UByte,
|
||||||
|
uShort: () -> UShort,
|
||||||
|
uInt: () -> UInt,
|
||||||
|
uLong: () -> ULong,
|
||||||
|
// string types
|
||||||
|
string: () -> String,
|
||||||
|
// function types
|
||||||
|
function: () -> (() -> Unit),
|
||||||
|
// external types
|
||||||
|
externalInterface: () -> ExternalInterface,
|
||||||
|
externalOpenClass: () -> ExternalOpenClass,
|
||||||
|
externalObject: () -> ExternalObject,
|
||||||
|
)
|
||||||
|
|
||||||
|
fun correctJsInteropTypesInJsCodeFunction(
|
||||||
|
// primitive types
|
||||||
|
boolean: Boolean,
|
||||||
|
char: Char,
|
||||||
|
byte: Byte,
|
||||||
|
short: Short,
|
||||||
|
int: Int,
|
||||||
|
long: Long,
|
||||||
|
float: Float,
|
||||||
|
double: Double,
|
||||||
|
// unsigned integer types
|
||||||
|
uByte: UByte,
|
||||||
|
uShort: UShort,
|
||||||
|
uInt: UInt,
|
||||||
|
uLong: ULong,
|
||||||
|
// string types
|
||||||
|
string: String,
|
||||||
|
// function types
|
||||||
|
function: () -> Unit,
|
||||||
|
// external types
|
||||||
|
externalInterface: ExternalInterface,
|
||||||
|
externalOpenClass: ExternalOpenClass,
|
||||||
|
externalObject: ExternalObject,
|
||||||
|
): Nothing = js("42")
|
||||||
|
|
||||||
|
@JsExport
|
||||||
|
fun correctJsInteropTypesInJsExportFunction(
|
||||||
|
// primitive types
|
||||||
|
boolean: Boolean,
|
||||||
|
char: Char,
|
||||||
|
byte: Byte,
|
||||||
|
short: Short,
|
||||||
|
int: Int,
|
||||||
|
long: Long,
|
||||||
|
float: Float,
|
||||||
|
double: Double,
|
||||||
|
// unsigned integer types
|
||||||
|
uByte: UByte,
|
||||||
|
uShort: UShort,
|
||||||
|
uInt: UInt,
|
||||||
|
uLong: ULong,
|
||||||
|
// string types
|
||||||
|
string: String,
|
||||||
|
// function types
|
||||||
|
function: () -> Unit,
|
||||||
|
// external types
|
||||||
|
externalInterface: ExternalInterface,
|
||||||
|
externalOpenClass: ExternalOpenClass,
|
||||||
|
externalObject: ExternalObject,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
|
||||||
|
typealias AliasedBoolean = Boolean
|
||||||
|
typealias AliasedChar = Char
|
||||||
|
typealias AliasedByte = Byte
|
||||||
|
typealias AliasedShort = Short
|
||||||
|
typealias AliasedInt = Int
|
||||||
|
typealias AliasedLong = Long
|
||||||
|
typealias AliasedFloat = Float
|
||||||
|
typealias AliasedDouble = Double
|
||||||
|
|
||||||
|
typealias AliasedUByte = UByte
|
||||||
|
typealias AliasedUShort = UShort
|
||||||
|
typealias AliasedUInt = UInt
|
||||||
|
typealias AliasedULong = ULong
|
||||||
|
|
||||||
|
typealias AliasedString = String
|
||||||
|
|
||||||
|
typealias AliasedFunction = () -> Unit
|
||||||
|
|
||||||
|
typealias AliasedExternalInterface = ExternalInterface
|
||||||
|
typealias AliasedExternalOpenClass = ExternalOpenClass
|
||||||
|
typealias AliasedExternalObject = ExternalObject
|
||||||
|
|
||||||
|
external fun aliasedCorrectJsInteropTypes(
|
||||||
|
// primitive types
|
||||||
|
boolean: AliasedBoolean,
|
||||||
|
char: AliasedChar,
|
||||||
|
byte: AliasedByte,
|
||||||
|
short: AliasedShort,
|
||||||
|
int: AliasedInt,
|
||||||
|
long: AliasedLong,
|
||||||
|
float: AliasedFloat,
|
||||||
|
double: AliasedDouble,
|
||||||
|
// unsigned integer types
|
||||||
|
uByte: AliasedUByte,
|
||||||
|
uShort: AliasedUShort,
|
||||||
|
uInt: AliasedUInt,
|
||||||
|
uLong: AliasedULong,
|
||||||
|
// string types
|
||||||
|
string: AliasedString,
|
||||||
|
// function types
|
||||||
|
function: AliasedFunction,
|
||||||
|
// external types
|
||||||
|
externalInterface: AliasedExternalInterface,
|
||||||
|
externalOpenClass: AliasedExternalOpenClass,
|
||||||
|
externalObject: AliasedExternalObject,
|
||||||
|
)
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
// !OPT_IN: kotlin.js.ExperimentalJsExport
|
|
||||||
|
|
||||||
external interface EI
|
|
||||||
external open class EC
|
|
||||||
external object EO
|
|
||||||
|
|
||||||
external fun supportedTypes(
|
|
||||||
boolean: Boolean,
|
|
||||||
|
|
||||||
byte: Byte,
|
|
||||||
short: Short,
|
|
||||||
int: Int,
|
|
||||||
long: Long,
|
|
||||||
|
|
||||||
float: Float,
|
|
||||||
double: Double,
|
|
||||||
|
|
||||||
char: Char,
|
|
||||||
string: String,
|
|
||||||
|
|
||||||
ei: EI,
|
|
||||||
ec: EC,
|
|
||||||
eo: EO,
|
|
||||||
|
|
||||||
f1: (Boolean, Byte, Short, Int, Long, Float, Double, Char, String, EI, EC, EO) -> Unit,
|
|
||||||
|
|
||||||
f2: (Boolean) -> ((Int) -> ((Float) -> ((String) -> EI))),
|
|
||||||
|
|
||||||
f3: ((((Boolean) -> Int) -> Float) -> String) -> EI,
|
|
||||||
): Unit
|
|
||||||
|
|
||||||
external fun supportedNullableTypes(
|
|
||||||
boolean: Boolean?,
|
|
||||||
|
|
||||||
byte: Byte?,
|
|
||||||
short: Short?,
|
|
||||||
int: Int?,
|
|
||||||
long: Long?,
|
|
||||||
|
|
||||||
float: Float?,
|
|
||||||
double: Double?,
|
|
||||||
|
|
||||||
char: Char?,
|
|
||||||
string: String?,
|
|
||||||
|
|
||||||
ei: EI?,
|
|
||||||
ec: EC?,
|
|
||||||
eo: EO?,
|
|
||||||
|
|
||||||
f1: ((Boolean?, Byte?, Short?, Int?, Long?, Float?, Double?, Char?, String?, EI?, EC?, EO?) -> Unit)?,
|
|
||||||
|
|
||||||
f2: ((Boolean?) -> ((Int?) -> ((Float?) -> ((String?) -> EI)?)?)?)?,
|
|
||||||
|
|
||||||
f3: ((((((((Boolean?) -> Int?)?) -> Float?)?) -> String?)?) -> EI?)?,
|
|
||||||
): Unit
|
|
||||||
|
|
||||||
external fun supportedReturnTypeUnit(): Unit
|
|
||||||
external fun supportedReturnTypeNothing(): Nothing
|
|
||||||
external fun supportedReturnTypeBoolean(): Boolean
|
|
||||||
external fun supportedReturnTypeNullableInt(): Int?
|
|
||||||
external fun supportedReturnTypeEI(): EI
|
|
||||||
external fun supportedReturnTypeNullableEC(): EC?
|
|
||||||
|
|
||||||
external fun <
|
|
||||||
T1 : EI,
|
|
||||||
T2 : EC?,
|
|
||||||
T3 : T1?
|
|
||||||
> supportedTypeParamtersUpperBounds(p1: T1, p2: T2): T3
|
|
||||||
|
|
||||||
external fun supportedVararg(vararg p: Int)
|
|
||||||
|
|
||||||
external fun wrongExternalTypes(
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>any: Any<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>nany: Any?<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>unit: Unit<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>nunit: Unit?<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>nothing: Nothing<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>nnothing: Nothing?<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>charSequence: CharSequence<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>list: List<Int><!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>array: Array<Int><!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>intArray: IntArray<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>pair: Pair<Int, Int><!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>number: Number<!>,
|
|
||||||
)
|
|
||||||
|
|
||||||
external fun wrongVararg(<!WRONG_JS_INTEROP_TYPE!>vararg p: Any<!>)
|
|
||||||
|
|
||||||
external fun <T> supportedTypeParamtersUpperBounds(p: T): T where T : EI, T : <!WRONG_JS_INTEROP_TYPE!>Any<!>
|
|
||||||
|
|
||||||
external fun <
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>T1<!>,
|
|
||||||
T2 : <!WRONG_JS_INTEROP_TYPE!>Number<!>,
|
|
||||||
T3: <!WRONG_JS_INTEROP_TYPE!>List<Int><!>,
|
|
||||||
> supportedTypeParamtersUpperBounds(
|
|
||||||
p1: T1,
|
|
||||||
p2: T2
|
|
||||||
): T3
|
|
||||||
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>fun jsCode1(<!WRONG_JS_INTEROP_TYPE!>x: Any<!>): Any<!> = js("x")
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>fun jsCode2(<!WRONG_JS_INTEROP_TYPE!>x: Any<!>): Any<!> {
|
|
||||||
js("return x;")
|
|
||||||
}
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>val jsProp: Any<!> = js("1")
|
|
||||||
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>@JsExport
|
|
||||||
fun exported(<!WRONG_JS_INTEROP_TYPE!>x: Any<!>): Any<!> = x
|
|
||||||
|
|
||||||
typealias EI_alias = EI
|
|
||||||
typealias Any_alias = Any
|
|
||||||
typealias Function_alias = (Int) -> Int
|
|
||||||
external fun fooAlias(
|
|
||||||
ei: EI_alias,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>any: Any_alias<!>,
|
|
||||||
function: Function_alias,
|
|
||||||
)
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
// !OPT_IN: kotlin.js.ExperimentalJsExport
|
|
||||||
|
|
||||||
external interface EI
|
|
||||||
external open class EC
|
|
||||||
external object EO
|
|
||||||
|
|
||||||
external fun supportedTypes(
|
|
||||||
boolean: Boolean,
|
|
||||||
|
|
||||||
byte: Byte,
|
|
||||||
short: Short,
|
|
||||||
int: Int,
|
|
||||||
long: Long,
|
|
||||||
|
|
||||||
float: Float,
|
|
||||||
double: Double,
|
|
||||||
|
|
||||||
char: Char,
|
|
||||||
string: String,
|
|
||||||
|
|
||||||
ei: EI,
|
|
||||||
ec: EC,
|
|
||||||
eo: EO,
|
|
||||||
|
|
||||||
f1: (Boolean, Byte, Short, Int, Long, Float, Double, Char, String, EI, EC, EO) -> Unit,
|
|
||||||
|
|
||||||
f2: (Boolean) -> ((Int) -> ((Float) -> ((String) -> EI))),
|
|
||||||
|
|
||||||
f3: ((((Boolean) -> Int) -> Float) -> String) -> EI,
|
|
||||||
): Unit
|
|
||||||
|
|
||||||
external fun supportedNullableTypes(
|
|
||||||
boolean: Boolean?,
|
|
||||||
|
|
||||||
byte: Byte?,
|
|
||||||
short: Short?,
|
|
||||||
int: Int?,
|
|
||||||
long: Long?,
|
|
||||||
|
|
||||||
float: Float?,
|
|
||||||
double: Double?,
|
|
||||||
|
|
||||||
char: Char?,
|
|
||||||
string: String?,
|
|
||||||
|
|
||||||
ei: EI?,
|
|
||||||
ec: EC?,
|
|
||||||
eo: EO?,
|
|
||||||
|
|
||||||
f1: ((Boolean?, Byte?, Short?, Int?, Long?, Float?, Double?, Char?, String?, EI?, EC?, EO?) -> Unit)?,
|
|
||||||
|
|
||||||
f2: ((Boolean?) -> ((Int?) -> ((Float?) -> ((String?) -> EI)?)?)?)?,
|
|
||||||
|
|
||||||
f3: ((((((((Boolean?) -> Int?)?) -> Float?)?) -> String?)?) -> EI?)?,
|
|
||||||
): Unit
|
|
||||||
|
|
||||||
external fun supportedReturnTypeUnit(): Unit
|
|
||||||
external fun supportedReturnTypeNothing(): Nothing
|
|
||||||
external fun supportedReturnTypeBoolean(): Boolean
|
|
||||||
external fun supportedReturnTypeNullableInt(): Int?
|
|
||||||
external fun supportedReturnTypeEI(): EI
|
|
||||||
external fun supportedReturnTypeNullableEC(): EC?
|
|
||||||
|
|
||||||
external fun <
|
|
||||||
T1 : EI,
|
|
||||||
T2 : EC?,
|
|
||||||
T3 : T1?
|
|
||||||
> supportedTypeParamtersUpperBounds(p1: T1, p2: T2): T3
|
|
||||||
|
|
||||||
external fun supportedVararg(vararg p: Int)
|
|
||||||
|
|
||||||
external fun wrongExternalTypes(
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>any: Any<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>nany: Any?<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>unit: Unit<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>nunit: Unit?<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>nothing: Nothing<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>nnothing: Nothing?<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>charSequence: CharSequence<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>list: List<Int><!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>array: Array<Int><!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>intArray: IntArray<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>pair: Pair<Int, Int><!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>number: Number<!>,
|
|
||||||
)
|
|
||||||
|
|
||||||
external fun wrongVararg(<!WRONG_JS_INTEROP_TYPE!>vararg p: Any<!>)
|
|
||||||
|
|
||||||
external fun <<!WRONG_JS_INTEROP_TYPE!>T<!>> supportedTypeParamtersUpperBounds(p: T): T where T : EI, T : Any
|
|
||||||
|
|
||||||
external fun <
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>T1<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>T2 : Number<!>,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>T3: List<Int><!>,
|
|
||||||
> supportedTypeParamtersUpperBounds(
|
|
||||||
p1: T1,
|
|
||||||
p2: T2
|
|
||||||
): T3
|
|
||||||
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>fun jsCode1(<!WRONG_JS_INTEROP_TYPE!>x: Any<!>): Any<!> = js("x")
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>fun jsCode2(<!WRONG_JS_INTEROP_TYPE!>x: Any<!>): Any<!> {
|
|
||||||
js("return x;")
|
|
||||||
}
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>val jsProp: Any<!> = js("1")
|
|
||||||
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>@JsExport
|
|
||||||
fun exported(<!WRONG_JS_INTEROP_TYPE!>x: Any<!>): Any<!> = x
|
|
||||||
|
|
||||||
typealias EI_alias = EI
|
|
||||||
typealias Any_alias = Any
|
|
||||||
typealias Function_alias = (Int) -> Int
|
|
||||||
external fun fooAlias(
|
|
||||||
ei: EI_alias,
|
|
||||||
<!WRONG_JS_INTEROP_TYPE!>any: Any_alias<!>,
|
|
||||||
function: Function_alias,
|
|
||||||
)
|
|
||||||
+247
@@ -0,0 +1,247 @@
|
|||||||
|
// OPT_IN: kotlin.js.ExperimentalJsExport
|
||||||
|
// DIAGNOSTICS: -FINAL_UPPER_BOUND, -UNUSED_PARAMETER
|
||||||
|
// DIAGNOSTICS: -NON_EXPORTABLE_TYPE
|
||||||
|
|
||||||
|
interface UserDefinedInterface
|
||||||
|
open class UserDefinedOpenClass
|
||||||
|
object UserDefinedObject
|
||||||
|
|
||||||
|
|
||||||
|
external fun wrongJsInteropTypes(
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unit: Unit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>nothing: Nothing<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: Any<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: Number<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: CharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: IntArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: Pair<Int, Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: List<Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: UserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: UserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: UserDefinedObject<!>,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun wrongNullableJsInteropTypes(
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unit: Unit?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>nothing: Nothing?<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: Any?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: Number?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: CharSequence?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: IntArray?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: Pair<Int, Int>?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: List<Int>?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: Array<Int>?<!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: UserDefinedInterface?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: UserDefinedOpenClass?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: UserDefinedObject?<!>,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
// wrong JS interop types as return types
|
||||||
|
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun anyAsReturnType(): Any<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun numberAsReturnType(): Number<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun charSequenceAsReturnType(): CharSequence<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun specializedArrayAsReturnType(): IntArray<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun pairAsReturnType(): Pair<Int, Int><!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun listAsReturnType(): List<Int><!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun genericArrayAsReturnType(): Array<Int><!>
|
||||||
|
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun userDefinedInterfaceAsReturnType(): UserDefinedInterface<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun userDefinedOpenClassAsReturnType(): UserDefinedOpenClass<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun userDefinedObjectAsReturnType(): UserDefinedObject<!>
|
||||||
|
|
||||||
|
|
||||||
|
// wrong JS interop types as vararg parameter types
|
||||||
|
|
||||||
|
// Unit (Nothing is not allowed in vararg parameters)
|
||||||
|
external fun unitAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: Unit<!>)
|
||||||
|
|
||||||
|
// built-in types
|
||||||
|
external fun anyAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: Any<!>)
|
||||||
|
external fun numberAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: Number<!>)
|
||||||
|
external fun charSequenceAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: CharSequence<!>)
|
||||||
|
external fun specializedArrayAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: IntArray<!>)
|
||||||
|
external fun pairAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: Pair<Int, Int><!>)
|
||||||
|
external fun listAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: List<Int><!>)
|
||||||
|
external fun genericArrayAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: Array<Int><!>)
|
||||||
|
|
||||||
|
// user-defined types
|
||||||
|
external fun userDefinedInterfaceAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: UserDefinedInterface<!>)
|
||||||
|
external fun userDefinedOpenClassAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: UserDefinedOpenClass<!>)
|
||||||
|
external fun userDefinedObjectAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: UserDefinedObject<!>)
|
||||||
|
|
||||||
|
|
||||||
|
external fun <
|
||||||
|
// Unit (Nothing as an upper bound results in an empty intersection type)
|
||||||
|
TUnit: <!WRONG_JS_INTEROP_TYPE!>Unit<!>,
|
||||||
|
// built-in types
|
||||||
|
TAny: <!WRONG_JS_INTEROP_TYPE!>Any<!>,
|
||||||
|
TNumber: <!WRONG_JS_INTEROP_TYPE!>Number<!>,
|
||||||
|
TCharSequence: <!WRONG_JS_INTEROP_TYPE!>CharSequence<!>,
|
||||||
|
TSpecializedArray: <!WRONG_JS_INTEROP_TYPE!>IntArray<!>,
|
||||||
|
TPair: <!WRONG_JS_INTEROP_TYPE!>Pair<Int, Int><!>,
|
||||||
|
TList: <!WRONG_JS_INTEROP_TYPE!>List<Int><!>,
|
||||||
|
TGenericArray: <!WRONG_JS_INTEROP_TYPE!>Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
TUserDefinedInterface: <!WRONG_JS_INTEROP_TYPE!>UserDefinedInterface<!>,
|
||||||
|
TUserDefinedOpenClass: <!WRONG_JS_INTEROP_TYPE!>UserDefinedOpenClass<!>,
|
||||||
|
TUserDefinedObject: <!WRONG_JS_INTEROP_TYPE!>UserDefinedObject<!>,
|
||||||
|
// type parameter with implicit upper bound
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TTypeParameterWithImplicitUpperBound<!>
|
||||||
|
> wrongJsInteropTypesAsFunctionTypeParameterUpperBounds(
|
||||||
|
unit: TUnit,
|
||||||
|
any: TAny,
|
||||||
|
number: TNumber,
|
||||||
|
charSequence: TCharSequence,
|
||||||
|
specializedArray: TSpecializedArray,
|
||||||
|
pair: TPair,
|
||||||
|
list: TList,
|
||||||
|
genericArray: TGenericArray,
|
||||||
|
userDefinedInterface: TUserDefinedInterface,
|
||||||
|
userDefinedOpenClass: TUserDefinedOpenClass,
|
||||||
|
userDefinedObject: TUserDefinedObject,
|
||||||
|
typeParameterWithImplicitUpperBound: TTypeParameterWithImplicitUpperBound
|
||||||
|
)
|
||||||
|
|
||||||
|
external class WrongJsInteropTypesAsClassTypeParameterUpperBounds<
|
||||||
|
// Unit (Nothing as an upper bound results in an empty intersection type)
|
||||||
|
TUnit: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>Unit<!>,
|
||||||
|
// built-in types
|
||||||
|
TAny: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>Any<!>,
|
||||||
|
TNumber: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>Number<!>,
|
||||||
|
TCharSequence: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>CharSequence<!>,
|
||||||
|
TSpecializedArray: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>IntArray<!>,
|
||||||
|
TPair: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>Pair<Int, Int><!>,
|
||||||
|
TList: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>List<Int><!>,
|
||||||
|
TGenericArray: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
TUserDefinedInterface: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>UserDefinedInterface<!>,
|
||||||
|
TUserDefinedOpenClass: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>UserDefinedOpenClass<!>,
|
||||||
|
TUserDefinedObject: <!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>UserDefinedObject<!>,
|
||||||
|
// type parameter with implicit upper bound
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>TTypeParameterWithImplicitUpperBound<!>
|
||||||
|
>
|
||||||
|
|
||||||
|
|
||||||
|
// wrong JS interop types as property types
|
||||||
|
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external val unitProperty: Unit<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external val nothingProperty: Nothing<!>
|
||||||
|
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val anyProperty: Any<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val numberProperty: Number<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val charSequenceProperty: CharSequence<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val specializedArrayProperty: IntArray<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val pairProperty: Pair<Int, Int><!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val listProperty: List<Int><!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val genericArrayProperty: Array<Int><!>
|
||||||
|
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val userDefinedInterfaceProperty: UserDefinedInterface<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val userDefinedOpenClassProperty: UserDefinedOpenClass<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val userDefinedObjectProperty: UserDefinedObject<!>
|
||||||
|
|
||||||
|
|
||||||
|
external fun wrongJsInteropTypesAsFunctionTypeParameterTypes(
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unitAndNothing: (Unit, Nothing) -> Unit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>builtInTypes: (Any, Number, CharSequence, IntArray, Pair<Int, Int>, List<Int>, Array<Int>) -> Unit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedTypes: (UserDefinedInterface, UserDefinedOpenClass, UserDefinedObject) -> Unit<!>,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun wrongJsInteropTypesAsFunctionTypeReturnTypes(
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: () -> Any<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: () -> Number<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: () -> CharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: () -> IntArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: () -> Pair<Int, Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: () -> List<Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: () -> Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: () -> UserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: () -> UserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: () -> UserDefinedObject<!>,
|
||||||
|
)
|
||||||
|
|
||||||
|
fun wrongJsInteropTypesInJsCodeFunction(
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unit: Unit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>nothing: Nothing<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: Any<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: Number<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: CharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: IntArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: Pair<Int, Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: List<Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: UserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: UserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: UserDefinedObject<!>,
|
||||||
|
): Nothing = js("42")
|
||||||
|
|
||||||
|
@JsExport
|
||||||
|
fun wrongJsInteropTypesInJsExportFunction(
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unit: Unit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>nothing: Nothing<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: Any<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: Number<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: CharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: IntArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: Pair<Int, Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: List<Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: UserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: UserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: UserDefinedObject<!>,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
|
||||||
|
typealias AliasedUnit = Unit
|
||||||
|
typealias AliasedNothing = Nothing
|
||||||
|
|
||||||
|
typealias AliasedAny = Any
|
||||||
|
typealias AliasedNumber = Number
|
||||||
|
typealias AliasedCharSequence = CharSequence
|
||||||
|
typealias AliasedSpecializedArray = IntArray
|
||||||
|
typealias AliasedPair = Pair<Int, Int>
|
||||||
|
typealias AliasedList = List<Int>
|
||||||
|
typealias AliasedGenericArray = Array<Int>
|
||||||
|
|
||||||
|
typealias AliasedUserDefinedInterface = UserDefinedInterface
|
||||||
|
typealias AliasedUserDefinedOpenClass = UserDefinedOpenClass
|
||||||
|
typealias AliasedUserDefinedObject = UserDefinedObject
|
||||||
|
|
||||||
|
external fun aliasedWrongJsInteropTypes(
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unit: AliasedUnit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>nothing: AliasedNothing<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: AliasedAny<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: AliasedNumber<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: AliasedCharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: AliasedSpecializedArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: AliasedPair<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: AliasedList<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: AliasedGenericArray<!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: AliasedUserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: AliasedUserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: AliasedUserDefinedObject<!>,
|
||||||
|
)
|
||||||
@@ -0,0 +1,247 @@
|
|||||||
|
// OPT_IN: kotlin.js.ExperimentalJsExport
|
||||||
|
// DIAGNOSTICS: -FINAL_UPPER_BOUND, -UNUSED_PARAMETER
|
||||||
|
// DIAGNOSTICS: -NON_EXPORTABLE_TYPE
|
||||||
|
|
||||||
|
interface UserDefinedInterface
|
||||||
|
open class UserDefinedOpenClass
|
||||||
|
object UserDefinedObject
|
||||||
|
|
||||||
|
|
||||||
|
external fun wrongJsInteropTypes(
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unit: Unit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>nothing: Nothing<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: Any<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: Number<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: CharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: IntArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: Pair<Int, Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: List<Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: UserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: UserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: UserDefinedObject<!>,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun wrongNullableJsInteropTypes(
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unit: Unit?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>nothing: Nothing?<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: Any?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: Number?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: CharSequence?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: IntArray?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: Pair<Int, Int>?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: List<Int>?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: Array<Int>?<!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: UserDefinedInterface?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: UserDefinedOpenClass?<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: UserDefinedObject?<!>,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
// wrong JS interop types as return types
|
||||||
|
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun anyAsReturnType(): Any<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun numberAsReturnType(): Number<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun charSequenceAsReturnType(): CharSequence<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun specializedArrayAsReturnType(): IntArray<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun pairAsReturnType(): Pair<Int, Int><!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun listAsReturnType(): List<Int><!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun genericArrayAsReturnType(): Array<Int><!>
|
||||||
|
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun userDefinedInterfaceAsReturnType(): UserDefinedInterface<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun userDefinedOpenClassAsReturnType(): UserDefinedOpenClass<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external fun userDefinedObjectAsReturnType(): UserDefinedObject<!>
|
||||||
|
|
||||||
|
|
||||||
|
// wrong JS interop types as vararg parameter types
|
||||||
|
|
||||||
|
// Unit (Nothing is not allowed in vararg parameters)
|
||||||
|
external fun unitAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: Unit<!>)
|
||||||
|
|
||||||
|
// built-in types
|
||||||
|
external fun anyAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: Any<!>)
|
||||||
|
external fun numberAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: Number<!>)
|
||||||
|
external fun charSequenceAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: CharSequence<!>)
|
||||||
|
external fun specializedArrayAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: IntArray<!>)
|
||||||
|
external fun pairAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: Pair<Int, Int><!>)
|
||||||
|
external fun listAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: List<Int><!>)
|
||||||
|
external fun genericArrayAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: Array<Int><!>)
|
||||||
|
|
||||||
|
// user-defined types
|
||||||
|
external fun userDefinedInterfaceAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: UserDefinedInterface<!>)
|
||||||
|
external fun userDefinedOpenClassAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: UserDefinedOpenClass<!>)
|
||||||
|
external fun userDefinedObjectAsVarargParameterType(<!WRONG_JS_INTEROP_TYPE!>vararg args: UserDefinedObject<!>)
|
||||||
|
|
||||||
|
|
||||||
|
external fun <
|
||||||
|
// Unit (Nothing as an upper bound results in an empty intersection type)
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TUnit: Unit<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TAny: Any<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TNumber: Number<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TCharSequence: CharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TSpecializedArray: IntArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TPair: Pair<Int, Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TList: List<Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TGenericArray: Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TUserDefinedInterface: UserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TUserDefinedOpenClass: UserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TUserDefinedObject: UserDefinedObject<!>,
|
||||||
|
// type parameter with implicit upper bound
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TTypeParameterWithImplicitUpperBound<!>
|
||||||
|
> wrongJsInteropTypesAsFunctionTypeParameterUpperBounds(
|
||||||
|
unit: TUnit,
|
||||||
|
any: TAny,
|
||||||
|
number: TNumber,
|
||||||
|
charSequence: TCharSequence,
|
||||||
|
specializedArray: TSpecializedArray,
|
||||||
|
pair: TPair,
|
||||||
|
list: TList,
|
||||||
|
genericArray: TGenericArray,
|
||||||
|
userDefinedInterface: TUserDefinedInterface,
|
||||||
|
userDefinedOpenClass: TUserDefinedOpenClass,
|
||||||
|
userDefinedObject: TUserDefinedObject,
|
||||||
|
typeParameterWithImplicitUpperBound: TTypeParameterWithImplicitUpperBound
|
||||||
|
)
|
||||||
|
|
||||||
|
external class WrongJsInteropTypesAsClassTypeParameterUpperBounds<
|
||||||
|
// Unit (Nothing as an upper bound results in an empty intersection type)
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TUnit: Unit<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TAny: Any<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TNumber: Number<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TCharSequence: CharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TSpecializedArray: IntArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TPair: Pair<Int, Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TList: List<Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TGenericArray: Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TUserDefinedInterface: UserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TUserDefinedOpenClass: UserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TUserDefinedObject: UserDefinedObject<!>,
|
||||||
|
// type parameter with implicit upper bound
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>TTypeParameterWithImplicitUpperBound<!>
|
||||||
|
>
|
||||||
|
|
||||||
|
|
||||||
|
// wrong JS interop types as property types
|
||||||
|
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external val unitProperty: Unit<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>external val nothingProperty: Nothing<!>
|
||||||
|
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val anyProperty: Any<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val numberProperty: Number<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val charSequenceProperty: CharSequence<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val specializedArrayProperty: IntArray<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val pairProperty: Pair<Int, Int><!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val listProperty: List<Int><!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val genericArrayProperty: Array<Int><!>
|
||||||
|
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val userDefinedInterfaceProperty: UserDefinedInterface<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val userDefinedOpenClassProperty: UserDefinedOpenClass<!>
|
||||||
|
<!WRONG_JS_INTEROP_TYPE, WRONG_JS_INTEROP_TYPE!>external val userDefinedObjectProperty: UserDefinedObject<!>
|
||||||
|
|
||||||
|
|
||||||
|
external fun wrongJsInteropTypesAsFunctionTypeParameterTypes(
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unitAndNothing: (Unit, Nothing) -> Unit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>builtInTypes: (Any, Number, CharSequence, IntArray, Pair<Int, Int>, List<Int>, Array<Int>) -> Unit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedTypes: (UserDefinedInterface, UserDefinedOpenClass, UserDefinedObject) -> Unit<!>,
|
||||||
|
)
|
||||||
|
|
||||||
|
external fun wrongJsInteropTypesAsFunctionTypeReturnTypes(
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: () -> Any<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: () -> Number<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: () -> CharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: () -> IntArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: () -> Pair<Int, Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: () -> List<Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: () -> Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: () -> UserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: () -> UserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: () -> UserDefinedObject<!>,
|
||||||
|
)
|
||||||
|
|
||||||
|
fun wrongJsInteropTypesInJsCodeFunction(
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unit: Unit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>nothing: Nothing<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: Any<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: Number<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: CharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: IntArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: Pair<Int, Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: List<Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: UserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: UserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: UserDefinedObject<!>,
|
||||||
|
): Nothing = js("42")
|
||||||
|
|
||||||
|
@JsExport
|
||||||
|
fun wrongJsInteropTypesInJsExportFunction(
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unit: Unit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>nothing: Nothing<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: Any<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: Number<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: CharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: IntArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: Pair<Int, Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: List<Int><!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: Array<Int><!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: UserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: UserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: UserDefinedObject<!>,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
|
||||||
|
typealias AliasedUnit = Unit
|
||||||
|
typealias AliasedNothing = Nothing
|
||||||
|
|
||||||
|
typealias AliasedAny = Any
|
||||||
|
typealias AliasedNumber = Number
|
||||||
|
typealias AliasedCharSequence = CharSequence
|
||||||
|
typealias AliasedSpecializedArray = IntArray
|
||||||
|
typealias AliasedPair = Pair<Int, Int>
|
||||||
|
typealias AliasedList = List<Int>
|
||||||
|
typealias AliasedGenericArray = Array<Int>
|
||||||
|
|
||||||
|
typealias AliasedUserDefinedInterface = UserDefinedInterface
|
||||||
|
typealias AliasedUserDefinedOpenClass = UserDefinedOpenClass
|
||||||
|
typealias AliasedUserDefinedObject = UserDefinedObject
|
||||||
|
|
||||||
|
external fun aliasedWrongJsInteropTypes(
|
||||||
|
// Unit and Nothing
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>unit: AliasedUnit<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>nothing: AliasedNothing<!>,
|
||||||
|
// built-in types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>any: AliasedAny<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>number: AliasedNumber<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>charSequence: AliasedCharSequence<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>specializedArray: AliasedSpecializedArray<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>pair: AliasedPair<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>list: AliasedList<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>genericArray: AliasedGenericArray<!>,
|
||||||
|
// user-defined types
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedInterface: AliasedUserDefinedInterface<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedOpenClass: AliasedUserDefinedOpenClass<!>,
|
||||||
|
<!WRONG_JS_INTEROP_TYPE!>userDefinedObject: AliasedUserDefinedObject<!>,
|
||||||
|
)
|
||||||
+15
-3
@@ -51,6 +51,18 @@ public class DiagnosticsFirWasmTestGenerated extends AbstractDiagnosticsFirWasmT
|
|||||||
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/body.kt");
|
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/body.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("complexCasesWithJsInteropTypes.kt")
|
||||||
|
public void testComplexCasesWithJsInteropTypes() {
|
||||||
|
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/complexCasesWithJsInteropTypes.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("correctJsInteropTypes.kt")
|
||||||
|
public void testCorrectJsInteropTypes() {
|
||||||
|
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/correctJsInteropTypes.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("definedExternally.kt")
|
@TestMetadata("definedExternally.kt")
|
||||||
public void testDefinedExternally() {
|
public void testDefinedExternally() {
|
||||||
@@ -124,9 +136,9 @@ public class DiagnosticsFirWasmTestGenerated extends AbstractDiagnosticsFirWasmT
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("types.kt")
|
@TestMetadata("wrongJsInteropTypes.kt")
|
||||||
public void testTypes() {
|
public void testWrongJsInteropTypes() {
|
||||||
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/types.kt");
|
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/wrongJsInteropTypes.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
+15
-3
@@ -51,6 +51,18 @@ public class DiagnosticsWasmTestGenerated extends AbstractDiagnosticsWasmTest {
|
|||||||
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/body.kt");
|
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/body.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("complexCasesWithJsInteropTypes.kt")
|
||||||
|
public void testComplexCasesWithJsInteropTypes() {
|
||||||
|
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/complexCasesWithJsInteropTypes.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("correctJsInteropTypes.kt")
|
||||||
|
public void testCorrectJsInteropTypes() {
|
||||||
|
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/correctJsInteropTypes.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("definedExternally.kt")
|
@TestMetadata("definedExternally.kt")
|
||||||
public void testDefinedExternally() {
|
public void testDefinedExternally() {
|
||||||
@@ -124,9 +136,9 @@ public class DiagnosticsWasmTestGenerated extends AbstractDiagnosticsWasmTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("types.kt")
|
@TestMetadata("wrongJsInteropTypes.kt")
|
||||||
public void testTypes() {
|
public void testWrongJsInteropTypes() {
|
||||||
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/types.kt");
|
runTest("compiler/testData/diagnostics/wasmTests/jsInterop/wrongJsInteropTypes.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user