diff --git a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt index 5bf213009aa..07b8d2f29fc 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt @@ -39,6 +39,7 @@ fun main(args: Array) { testClass { model("box/main", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.WASM) model("box/kotlin.test/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.WASM) + model("box/native/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.WASM) } testClass { diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt index 54dcc643135..1a641209c19 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt @@ -86,6 +86,11 @@ abstract class BasicWasmBoxTest( } } + val additionalJsFile = filePath.removeSuffix(".kt") + ".js" + if (File(additionalJsFile).exists()) { + jsFilesBefore += additionalJsFile + } + val localCommonFile = file.parent + "/" + COMMON_FILES_NAME + "." + KotlinFileType.EXTENSION val localCommonFiles = if (File(localCommonFile).exists()) listOf(localCommonFile) else emptyList() diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/JsTranslatorWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/JsTranslatorWasmTestGenerated.java index 81f3d9729da..395bad10049 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/JsTranslatorWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/JsTranslatorWasmTestGenerated.java @@ -130,4 +130,132 @@ public class JsTranslatorWasmTestGenerated extends AbstractJsTranslatorWasmTest runTest("js/js.translator/testData/box/kotlin.test/simple.kt"); } } + + @TestMetadata("js/js.translator/testData/box/native") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Native extends AbstractJsTranslatorWasmTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest0(this::doTest, TargetBackend.WASM, testDataFilePath); + } + + @TestMetadata("accessToCompanionObjectFromInlineFun.kt") + public void testAccessToCompanionObjectFromInlineFun() throws Exception { + runTest("js/js.translator/testData/box/native/accessToCompanionObjectFromInlineFun.kt"); + } + + public void testAllFilesPresentInNative() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/native"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true); + } + + @TestMetadata("castToNativeClassChecked.kt") + public void testCastToNativeClassChecked() throws Exception { + runTest("js/js.translator/testData/box/native/castToNativeClassChecked.kt"); + } + + @TestMetadata("castToNativeInterface.kt") + public void testCastToNativeInterface() throws Exception { + runTest("js/js.translator/testData/box/native/castToNativeInterface.kt"); + } + + @TestMetadata("castToNativeInterfaceChecked.kt") + public void testCastToNativeInterfaceChecked() throws Exception { + runTest("js/js.translator/testData/box/native/castToNativeInterfaceChecked.kt"); + } + + @TestMetadata("castToNullableNativeInterface.kt") + public void testCastToNullableNativeInterface() throws Exception { + runTest("js/js.translator/testData/box/native/castToNullableNativeInterface.kt"); + } + + @TestMetadata("castToTypeParamBoundedByNativeInterface.kt") + public void testCastToTypeParamBoundedByNativeInterface() throws Exception { + runTest("js/js.translator/testData/box/native/castToTypeParamBoundedByNativeInterface.kt"); + } + + @TestMetadata("class.kt") + public void testClass() throws Exception { + runTest("js/js.translator/testData/box/native/class.kt"); + } + + @TestMetadata("classObject.kt") + public void testClassObject() throws Exception { + runTest("js/js.translator/testData/box/native/classObject.kt"); + } + + @TestMetadata("kt2209.kt") + public void testKt2209() throws Exception { + runTest("js/js.translator/testData/box/native/kt2209.kt"); + } + + @TestMetadata("nestedElements.kt") + public void testNestedElements() throws Exception { + runTest("js/js.translator/testData/box/native/nestedElements.kt"); + } + + @TestMetadata("objectFunWithVararg.kt") + public void testObjectFunWithVararg() throws Exception { + runTest("js/js.translator/testData/box/native/objectFunWithVararg.kt"); + } + + @TestMetadata("passExtLambdaToNative.kt") + public void testPassExtLambdaToNative() throws Exception { + runTest("js/js.translator/testData/box/native/passExtLambdaToNative.kt"); + } + + @TestMetadata("passMemberOrExtFromNative.kt") + public void testPassMemberOrExtFromNative() throws Exception { + runTest("js/js.translator/testData/box/native/passMemberOrExtFromNative.kt"); + } + + @TestMetadata("passMemberOrExtToNative.kt") + public void testPassMemberOrExtToNative() throws Exception { + runTest("js/js.translator/testData/box/native/passMemberOrExtToNative.kt"); + } + + @TestMetadata("passTopLevelFunctionFromNative.kt") + public void testPassTopLevelFunctionFromNative() throws Exception { + runTest("js/js.translator/testData/box/native/passTopLevelFunctionFromNative.kt"); + } + + @TestMetadata("passTopLevelOrLocalFunctionToNative.kt") + public void testPassTopLevelOrLocalFunctionToNative() throws Exception { + runTest("js/js.translator/testData/box/native/passTopLevelOrLocalFunctionToNative.kt"); + } + + @TestMetadata("privateExternal.kt") + public void testPrivateExternal() throws Exception { + runTest("js/js.translator/testData/box/native/privateExternal.kt"); + } + + @TestMetadata("safeCastToNativeInterface.kt") + public void testSafeCastToNativeInterface() throws Exception { + runTest("js/js.translator/testData/box/native/safeCastToNativeInterface.kt"); + } + + @TestMetadata("secondaryConstructor.kt") + public void testSecondaryConstructor() throws Exception { + runTest("js/js.translator/testData/box/native/secondaryConstructor.kt"); + } + + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + runTest("js/js.translator/testData/box/native/simple.kt"); + } + + @TestMetadata("simpleUndefined.kt") + public void testSimpleUndefined() throws Exception { + runTest("js/js.translator/testData/box/native/simpleUndefined.kt"); + } + + @TestMetadata("useClassFromInlineFun.kt") + public void testUseClassFromInlineFun() throws Exception { + runTest("js/js.translator/testData/box/native/useClassFromInlineFun.kt"); + } + + @TestMetadata("vararg.kt") + public void testVararg() throws Exception { + runTest("js/js.translator/testData/box/native/vararg.kt"); + } + } } diff --git a/js/js.translator/testData/box/native/callbackOptionalParameter.kt b/js/js.translator/testData/box/native/callbackOptionalParameter.kt index 0ab5a2c813f..f7168c3c993 100644 --- a/js/js.translator/testData/box/native/callbackOptionalParameter.kt +++ b/js/js.translator/testData/box/native/callbackOptionalParameter.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: CLASS_EXPORT // IGNORE_BACKEND: JS_IR_ES6 // EXPECTED_REACHABLE_NODES: 1294 package foo diff --git a/js/js.translator/testData/box/native/equalsMangling.kt b/js/js.translator/testData/box/native/equalsMangling.kt index 3604271c7ce..b2d2a7b34b4 100644 --- a/js/js.translator/testData/box/native/equalsMangling.kt +++ b/js/js.translator/testData/box/native/equalsMangling.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // EXPECTED_REACHABLE_NODES: 1290 data class A(val number: Int) diff --git a/js/js.translator/testData/box/native/eval.kt b/js/js.translator/testData/box/native/eval.kt index 97a9e94eb91..407ed1bd926 100644 --- a/js/js.translator/testData/box/native/eval.kt +++ b/js/js.translator/testData/box/native/eval.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // SKIP_MINIFICATION val top = "TOP LEVEL" diff --git a/js/js.translator/testData/box/native/exception.kt b/js/js.translator/testData/box/native/exception.kt index ed3ee741b26..5078b212931 100644 --- a/js/js.translator/testData/box/native/exception.kt +++ b/js/js.translator/testData/box/native/exception.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // EXPECTED_REACHABLE_NODES: 1281 external class TypeError(message: String?, fileName: String? = definedExternally, lineNumber: Int? = definedExternally) : Throwable diff --git a/js/js.translator/testData/box/native/externalNestedEnum.kt b/js/js.translator/testData/box/native/externalNestedEnum.kt index c37f0a59a47..b8d2831b0d2 100644 --- a/js/js.translator/testData/box/native/externalNestedEnum.kt +++ b/js/js.translator/testData/box/native/externalNestedEnum.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // KT-46961 // IGNORE_BACKEND: JS diff --git a/js/js.translator/testData/box/native/inheritanceFromNativeClass.kt b/js/js.translator/testData/box/native/inheritanceFromNativeClass.kt index f445146073d..20cdffe9613 100644 --- a/js/js.translator/testData/box/native/inheritanceFromNativeClass.kt +++ b/js/js.translator/testData/box/native/inheritanceFromNativeClass.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // EXPECTED_REACHABLE_NODES: 1298 package foo diff --git a/js/js.translator/testData/box/native/inheritanceFromNativeTrait.kt b/js/js.translator/testData/box/native/inheritanceFromNativeTrait.kt index 61864ae6a27..11cbee458a2 100644 --- a/js/js.translator/testData/box/native/inheritanceFromNativeTrait.kt +++ b/js/js.translator/testData/box/native/inheritanceFromNativeTrait.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: IMPLEMENTING_EXTERNAL_INTERFACE // EXPECTED_REACHABLE_NODES: 1297 package foo diff --git a/js/js.translator/testData/box/native/inheritanceInNativeClass.kt b/js/js.translator/testData/box/native/inheritanceInNativeClass.kt index 087cf5d1f68..b659a89114c 100644 --- a/js/js.translator/testData/box/native/inheritanceInNativeClass.kt +++ b/js/js.translator/testData/box/native/inheritanceInNativeClass.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: CLASS_EXPORT // SKIP_MINIFICATION // Contains calls from external JS code diff --git a/js/js.translator/testData/box/native/library.kt b/js/js.translator/testData/box/native/library.kt index 8d8f248d39d..a95aebb5b97 100644 --- a/js/js.translator/testData/box/native/library.kt +++ b/js/js.translator/testData/box/native/library.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // DONT_TARGET_EXACT_BACKEND: JS_IR // DONT_TARGET_EXACT_BACKEND: JS_IR_ES6 // EXPECTED_REACHABLE_NODES: 1282 diff --git a/js/js.translator/testData/box/native/nativeClassAsReifiedTypeArgument.kt b/js/js.translator/testData/box/native/nativeClassAsReifiedTypeArgument.kt index 0202f839c33..b035928e230 100644 --- a/js/js.translator/testData/box/native/nativeClassAsReifiedTypeArgument.kt +++ b/js/js.translator/testData/box/native/nativeClassAsReifiedTypeArgument.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // EXPECTED_REACHABLE_NODES: 1283 //FILE: nativeClassAsReifiedTypeArgument.kt diff --git a/js/js.translator/testData/box/native/nativeGetterAndNativeSetter.kt b/js/js.translator/testData/box/native/nativeGetterAndNativeSetter.kt index 773d41bf129..72eae1a4860 100644 --- a/js/js.translator/testData/box/native/nativeGetterAndNativeSetter.kt +++ b/js/js.translator/testData/box/native/nativeGetterAndNativeSetter.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // EXPECTED_REACHABLE_NODES: 1291 package foo diff --git a/js/js.translator/testData/box/native/nativeInvoke.kt b/js/js.translator/testData/box/native/nativeInvoke.kt index b9f086273b4..0985dc91a21 100644 --- a/js/js.translator/testData/box/native/nativeInvoke.kt +++ b/js/js.translator/testData/box/native/nativeInvoke.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // EXPECTED_REACHABLE_NODES: 1244 package foo diff --git a/js/js.translator/testData/box/native/nestedElements.kt b/js/js.translator/testData/box/native/nestedElements.kt index 1810fa9c0d4..b3a283e8bb7 100644 --- a/js/js.translator/testData/box/native/nestedElements.kt +++ b/js/js.translator/testData/box/native/nestedElements.kt @@ -1,3 +1,4 @@ +// IGNORE_BACKEND: WASM // EXPECTED_REACHABLE_NODES: 1310 package foo diff --git a/js/js.translator/testData/box/native/objectFunWithVararg.kt b/js/js.translator/testData/box/native/objectFunWithVararg.kt index 94433915ba8..fe4304db671 100644 --- a/js/js.translator/testData/box/native/objectFunWithVararg.kt +++ b/js/js.translator/testData/box/native/objectFunWithVararg.kt @@ -1,3 +1,4 @@ +// IGNORE_BACKEND: WASM // EXPECTED_REACHABLE_NODES: 1281 import Test.test diff --git a/js/js.translator/testData/box/native/overrideNativeOverloadedFunction.kt b/js/js.translator/testData/box/native/overrideNativeOverloadedFunction.kt index 3221b24603c..2a183a5424a 100644 --- a/js/js.translator/testData/box/native/overrideNativeOverloadedFunction.kt +++ b/js/js.translator/testData/box/native/overrideNativeOverloadedFunction.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // EXPECTED_REACHABLE_NODES: 1304 external open class A { open fun f(x: Int): String = definedExternally diff --git a/js/js.translator/testData/box/native/passExtLambdaFromNative.kt b/js/js.translator/testData/box/native/passExtLambdaFromNative.kt index 8de59fa435e..03d2e4e5eed 100644 --- a/js/js.translator/testData/box/native/passExtLambdaFromNative.kt +++ b/js/js.translator/testData/box/native/passExtLambdaFromNative.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 // EXPECTED_REACHABLE_NODES: 1285 diff --git a/js/js.translator/testData/box/native/passExtLambdaToNative.kt b/js/js.translator/testData/box/native/passExtLambdaToNative.kt index c138c7e533d..3cc4ed67a1f 100644 --- a/js/js.translator/testData/box/native/passExtLambdaToNative.kt +++ b/js/js.translator/testData/box/native/passExtLambdaToNative.kt @@ -2,6 +2,7 @@ // IGNORE_BACKEND: JS_IR_ES6 // TODO: Unmute when extension functions are supported in external declarations. // IGNORE_BACKEND: JS +// IGNORE_BACKEND: WASM package foo diff --git a/js/js.translator/testData/box/native/passMemberOrExtFromNative.kt b/js/js.translator/testData/box/native/passMemberOrExtFromNative.kt index 85f256ac4b2..16724a07859 100644 --- a/js/js.translator/testData/box/native/passMemberOrExtFromNative.kt +++ b/js/js.translator/testData/box/native/passMemberOrExtFromNative.kt @@ -1,3 +1,4 @@ +// IGNORE_BACKEND: WASM // EXPECTED_REACHABLE_NODES: 1285 package foo diff --git a/js/js.translator/testData/box/native/passMemberOrExtToNative.kt b/js/js.translator/testData/box/native/passMemberOrExtToNative.kt index c04b57ef200..b5e857a8400 100644 --- a/js/js.translator/testData/box/native/passMemberOrExtToNative.kt +++ b/js/js.translator/testData/box/native/passMemberOrExtToNative.kt @@ -2,6 +2,7 @@ // IGNORE_BACKEND: JS_IR_ES6 // TODO: Unmute when extension functions are supported in external declarations. // IGNORE_BACKEND: JS +// IGNORE_BACKEND: WASM package foo diff --git a/js/js.translator/testData/box/native/print.kt b/js/js.translator/testData/box/native/print.kt index f6e17c09ba7..397c5742c84 100644 --- a/js/js.translator/testData/box/native/print.kt +++ b/js/js.translator/testData/box/native/print.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 // KJS_WITH_FULL_RUNTIME diff --git a/js/js.translator/testData/box/native/secondaryConstructor.kt b/js/js.translator/testData/box/native/secondaryConstructor.kt index 2b933bedeb1..28105c15397 100644 --- a/js/js.translator/testData/box/native/secondaryConstructor.kt +++ b/js/js.translator/testData/box/native/secondaryConstructor.kt @@ -1,3 +1,4 @@ +// IGNORE_BACKEND: WASM // EXPECTED_REACHABLE_NODES: 1285 package foo diff --git a/js/js.translator/testData/box/native/simpleUndefined.kt b/js/js.translator/testData/box/native/simpleUndefined.kt index dfb3b6ce539..f4a48b4bdc6 100644 --- a/js/js.translator/testData/box/native/simpleUndefined.kt +++ b/js/js.translator/testData/box/native/simpleUndefined.kt @@ -1,3 +1,4 @@ +// IGNORE_BACKEND: WASM // EXPECTED_REACHABLE_NODES: 1281 package foo diff --git a/js/js.translator/testData/box/native/typeof.kt b/js/js.translator/testData/box/native/typeof.kt index 215b6f397fb..8406761a4f5 100644 --- a/js/js.translator/testData/box/native/typeof.kt +++ b/js/js.translator/testData/box/native/typeof.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // EXPECTED_REACHABLE_NODES: 1286 package foo diff --git a/js/js.translator/testData/box/native/undefined.kt b/js/js.translator/testData/box/native/undefined.kt index 7a3e609bd71..b08f0c09736 100644 --- a/js/js.translator/testData/box/native/undefined.kt +++ b/js/js.translator/testData/box/native/undefined.kt @@ -1,3 +1,5 @@ +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: UNSUPPORTED_JS_INTEROP // EXPECTED_REACHABLE_NODES: 1288 package foo diff --git a/js/js.translator/testData/box/native/useClassFromInlineFun.kt b/js/js.translator/testData/box/native/useClassFromInlineFun.kt index c491f21536d..ed484370882 100644 --- a/js/js.translator/testData/box/native/useClassFromInlineFun.kt +++ b/js/js.translator/testData/box/native/useClassFromInlineFun.kt @@ -1,3 +1,4 @@ +// IGNORE_BACKEND: WASM // EXPECTED_REACHABLE_NODES: 1282 // FILE: main.kt diff --git a/js/js.translator/testData/box/native/vararg.kt b/js/js.translator/testData/box/native/vararg.kt index e23e9f9957d..fb5114a724c 100644 --- a/js/js.translator/testData/box/native/vararg.kt +++ b/js/js.translator/testData/box/native/vararg.kt @@ -1,3 +1,4 @@ +// IGNORE_BACKEND: WASM // EXPECTED_REACHABLE_NODES: 1314 package foo