From 644dd05f2002bfadfa5997c55762939773a18b4e Mon Sep 17 00:00:00 2001 From: Pavel Kunyavskiy Date: Mon, 6 May 2024 14:14:52 +0200 Subject: [PATCH] [K2/JS] Add reproducer for KT-67978 ^KT-67978 --- ...CompilerTestFE10TestdataTestGenerated.java | 6 ++ ...sticCompilerFE10TestDataTestGenerated.java | 6 ++ ...DiagnosticsWithLightTreeTestGenerated.java | 6 ++ ...endMPPDiagnosticsWithPsiTestGenerated.java | 6 ++ .../multiplatform/expectsWithJsExport.fir.kt | 86 +++++++++++++++++++ .../multiplatform/expectsWithJsExport.kt | 86 +++++++++++++++++++ .../multiplatform/expectsWithJsExport.ll.kt | 86 +++++++++++++++++++ .../test/runners/DiagnosticTestGenerated.java | 6 ++ 8 files changed, 288 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.fir.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.ll.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 10e157e8eaced..776988cddc47a 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -25402,6 +25402,12 @@ public void testExpectTailrec_oldLanguageVersion() { runTest("compiler/testData/diagnostics/tests/multiplatform/expectTailrec_oldLanguageVersion.kt"); } + @Test + @TestMetadata("expectsWithJsExport.kt") + public void testExpectsWithJsExport() { + runTest("compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.kt"); + } + @Test @TestMetadata("extraNestedClassOnActualViaActualTypealias.kt") public void testExtraNestedClassOnActualViaActualTypealias() { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 1bbc763ca8fc0..ad761cffd4cd3 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -25402,6 +25402,12 @@ public void testExpectTailrec_oldLanguageVersion() { runTest("compiler/testData/diagnostics/tests/multiplatform/expectTailrec_oldLanguageVersion.kt"); } + @Test + @TestMetadata("expectsWithJsExport.kt") + public void testExpectsWithJsExport() { + runTest("compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.kt"); + } + @Test @TestMetadata("extraNestedClassOnActualViaActualTypealias.kt") public void testExtraNestedClassOnActualViaActualTypealias() { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java index 24d8767e2248c..1a9562d05f392 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java @@ -229,6 +229,12 @@ public void testExpectTailrec_oldLanguageVersion() { runTest("compiler/testData/diagnostics/tests/multiplatform/expectTailrec_oldLanguageVersion.kt"); } + @Test + @TestMetadata("expectsWithJsExport.kt") + public void testExpectsWithJsExport() { + runTest("compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.kt"); + } + @Test @TestMetadata("extraNestedClassOnActualViaActualTypealias.kt") public void testExtraNestedClassOnActualViaActualTypealias() { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java index 6775a8b0857a1..19777882a6ab7 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java @@ -229,6 +229,12 @@ public void testExpectTailrec_oldLanguageVersion() { runTest("compiler/testData/diagnostics/tests/multiplatform/expectTailrec_oldLanguageVersion.kt"); } + @Test + @TestMetadata("expectsWithJsExport.kt") + public void testExpectsWithJsExport() { + runTest("compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.kt"); + } + @Test @TestMetadata("extraNestedClassOnActualViaActualTypealias.kt") public void testExtraNestedClassOnActualViaActualTypealias() { diff --git a/compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.fir.kt new file mode 100644 index 0000000000000..36b846f08413f --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.fir.kt @@ -0,0 +1,86 @@ +// ISSUE: KT-64951 + +// MODULE: m1-common +// FILE: common1.kt + +@Target(AnnotationTarget.FILE, AnnotationTarget.CLASS) +expect annotation class Export() + +@Export +expect class WithExportOnExpect { + fun foo() + val bar: Int +} + +expect class WithExportOnActual { + fun foo() + val bar: Int +} + +expect class WithExportTypealiasOnActual { + fun foo() + val bar: Int +} + +expect class WithFileExportOnActual { + fun foo() + val bar: Int +} + +// FILE: common2.kt +@file:Export + +expect class WithExportOnExpectFile { + fun foo() + val bar: Int +} + +// MODULE: m1-js()()(m1-common) + +// FILE: annotation.kt +package kotlin.js + +@Target(AnnotationTarget.FILE, AnnotationTarget.CLASS) +annotation class JsExport + +// FILE: alias.kt +import kotlin.js.* + +actual typealias Export = kotlin.js.JsExport + +// FILE: js1.kt +import kotlin.js.* + +@Export +actual class WithExportOnExpect { + actual fun foo() {} + actual val bar = 42 +} + +@JsExport +actual class WithExportOnActual { + actual fun foo() {} + actual val bar = 42 +} + +@Export +actual class WithExportTypealiasOnActual { + actual fun foo() {} + actual val bar = 42 +} + +// FILE: js2.kt +@file:JsExport +import kotlin.js.* + +actual class WithFileExportOnActual { + actual fun foo() {} + actual val bar: Int = 42 +} + +// FILE: js3.kt + +actual class WithExportOnExpectFile { + actual fun foo() {} + actual val bar: Int = 42 +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.kt b/compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.kt new file mode 100644 index 0000000000000..a20f4b9665d28 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.kt @@ -0,0 +1,86 @@ +// ISSUE: KT-64951 + +// MODULE: m1-common +// FILE: common1.kt + +@Target(AnnotationTarget.FILE, AnnotationTarget.CLASS) +expect annotation class Export() + +@Export +expect class WithExportOnExpect { + fun foo() + val bar: Int +} + +expect class WithExportOnActual { + fun foo() + val bar: Int +} + +expect class WithExportTypealiasOnActual { + fun foo() + val bar: Int +} + +expect class WithFileExportOnActual { + fun foo() + val bar: Int +} + +// FILE: common2.kt +@file:Export + +expect class WithExportOnExpectFile { + fun foo() + val bar: Int +} + +// MODULE: m1-js()()(m1-common) + +// FILE: annotation.kt +package kotlin.js + +@Target(AnnotationTarget.FILE, AnnotationTarget.CLASS) +annotation class JsExport + +// FILE: alias.kt +import kotlin.js.* + +actual typealias Export = kotlin.js.JsExport + +// FILE: js1.kt +import kotlin.js.* + +@Export +actual class WithExportOnExpect { + actual fun foo() {} + actual val bar = 42 +} + +@JsExport +actual class WithExportOnActual { + actual fun foo() {} + actual val bar = 42 +} + +@Export +actual class WithExportTypealiasOnActual { + actual fun foo() {} + actual val bar = 42 +} + +// FILE: js2.kt +@file:JsExport +import kotlin.js.* + +actual class WithFileExportOnActual { + actual fun foo() {} + actual val bar: Int = 42 +} + +// FILE: js3.kt + +actual class WithExportOnExpectFile { + actual fun foo() {} + actual val bar: Int = 42 +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.ll.kt new file mode 100644 index 0000000000000..0820894fd0fcc --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.ll.kt @@ -0,0 +1,86 @@ +// ISSUE: KT-64951 + +// MODULE: m1-common +// FILE: common1.kt + +@Target(AnnotationTarget.FILE, AnnotationTarget.CLASS) +expect annotation class Export() + +@Export +expect class WithExportOnExpect { + fun foo() + val bar: Int +} + +expect class WithExportOnActual { + fun foo() + val bar: Int +} + +expect class WithExportTypealiasOnActual { + fun foo() + val bar: Int +} + +expect class WithFileExportOnActual { + fun foo() + val bar: Int +} + +// FILE: common2.kt +@file:Export + +expect class WithExportOnExpectFile { + fun foo() + val bar: Int +} + +// MODULE: m1-js()()(m1-common) + +// FILE: annotation.kt +package kotlin.js + +@Target(AnnotationTarget.FILE, AnnotationTarget.CLASS) +annotation class JsExport + +// FILE: alias.kt +import kotlin.js.* + +actual typealias Export = kotlin.js.JsExport + +// FILE: js1.kt +import kotlin.js.* + +@Export +actual class WithExportOnExpect { + actual fun foo() {} + actual val bar = 42 +} + +@JsExport +actual class WithExportOnActual { + actual fun foo() {} + actual val bar = 42 +} + +@Export +actual class WithExportTypealiasOnActual { + actual fun foo() {} + actual val bar = 42 +} + +// FILE: js2.kt +@file:JsExport +import kotlin.js.* + +actual class WithFileExportOnActual { + actual fun foo() {} + actual val bar: Int = 42 +} + +// FILE: js3.kt + +actual class WithExportOnExpectFile { + actual fun foo() {} + actual val bar: Int = 42 +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index a6440c677e580..26c72e2ac0d01 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -25402,6 +25402,12 @@ public void testExpectTailrec_oldLanguageVersion() { runTest("compiler/testData/diagnostics/tests/multiplatform/expectTailrec_oldLanguageVersion.kt"); } + @Test + @TestMetadata("expectsWithJsExport.kt") + public void testExpectsWithJsExport() { + runTest("compiler/testData/diagnostics/tests/multiplatform/expectsWithJsExport.kt"); + } + @Test @TestMetadata("extraNestedClassOnActualViaActualTypealias.kt") public void testExtraNestedClassOnActualViaActualTypealias() {