K1: Add test for compatibility check of Enum.entries
Basically, the test checks that adding Enum.entries feature doesn't break the existing code where it clashes with the user-defined "entries" declaration; it's better to have a black-box test to be sure that the compiler doesn't invoke something different at runtime The test covers KT-53153 and KT-56587 Merge-request: KT-MR-9798 Merged-by: Michail Zarečenskij <Mikhail.Zarechenskiy@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
25f2c513f6
commit
6d7dc45ce6
+6
@@ -16643,6 +16643,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesFromJava.kt")
|
||||
public void testEnumEntriesFromJava() throws Exception {
|
||||
|
||||
+6
@@ -16643,6 +16643,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesFromJava.kt")
|
||||
public void testEnumEntriesFromJava() throws Exception {
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
// !LANGUAGE: +EnumEntries
|
||||
// IGNORE_BACKEND: JS, JVM, JS_IR, JS_IR_ES6
|
||||
// IGNORE_BACKEND_K2: JVM_IR, NATIVE
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// FULL_JDK
|
||||
// WITH_STDLIB
|
||||
|
||||
package pckg
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
enum class EBasic {
|
||||
A0;
|
||||
}
|
||||
|
||||
enum class E0 {;
|
||||
companion object {
|
||||
val entries = "OK"
|
||||
}
|
||||
}
|
||||
|
||||
object Shadowing {
|
||||
val entries = "OK"
|
||||
|
||||
enum class E0 {
|
||||
E;
|
||||
|
||||
fun test() = entries
|
||||
}
|
||||
}
|
||||
|
||||
enum class E01 {;
|
||||
object entries {
|
||||
override fun toString(): String {
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum class E02(val entries: String) {
|
||||
E("OK");
|
||||
fun test() = entries // check whether this entries is referenced to ctor parameter
|
||||
}
|
||||
|
||||
var e03Res: String? = null
|
||||
|
||||
enum class E03 {
|
||||
E("OK");
|
||||
|
||||
constructor(entries: String) {
|
||||
e03Res = entries
|
||||
}
|
||||
}
|
||||
|
||||
enum class E04 {
|
||||
E;
|
||||
val entries = "OK"
|
||||
fun test() = entries
|
||||
}
|
||||
|
||||
// This case doesn't work in KJS/IR: KT-58396
|
||||
interface I05 {
|
||||
val entries: String
|
||||
get() = "OK"
|
||||
}
|
||||
|
||||
enum class E05 : I05 {
|
||||
E;
|
||||
|
||||
fun test() = entries
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
fun box(): String {
|
||||
assertEquals(EBasic.entries.first().toString(), "A0") // make sure the feature is working
|
||||
|
||||
assertEquals(E0.entries, "OK")
|
||||
assertEquals(Shadowing.E0.E.test(), "OK")
|
||||
assertEquals(E01.entries.toString(), "OK")
|
||||
assertEquals(E02.E.test(), "OK")
|
||||
|
||||
E03.E // to initialize e03Res
|
||||
assertEquals(e03Res, "OK")
|
||||
|
||||
assertEquals(E04.E.entries, "OK")
|
||||
assertEquals(E04.E.test(), "OK")
|
||||
assertEquals(E05.E.test(), "OK")
|
||||
return "OK"
|
||||
}
|
||||
+6
@@ -16295,6 +16295,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
|
||||
+6
@@ -16643,6 +16643,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesFromJava.kt")
|
||||
public void testEnumEntriesFromJava() throws Exception {
|
||||
|
||||
+6
@@ -16643,6 +16643,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesFromJava.kt")
|
||||
public void testEnumEntriesFromJava() throws Exception {
|
||||
|
||||
+5
@@ -13366,6 +13366,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void ignoreEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void ignoreEnumEntriesInCompanion() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesInCompanion.kt");
|
||||
|
||||
+6
@@ -12587,6 +12587,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
|
||||
+6
@@ -12683,6 +12683,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
|
||||
+6
@@ -12683,6 +12683,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
|
||||
+6
@@ -12683,6 +12683,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
|
||||
+6
@@ -13831,6 +13831,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
|
||||
+6
@@ -14155,6 +14155,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
|
||||
+6
@@ -13670,6 +13670,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
|
||||
+6
@@ -13832,6 +13832,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
|
||||
Generated
+5
@@ -11249,6 +11249,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntries.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("enumEntriesCompatibilityCheck.kt")
|
||||
public void testEnumEntriesCompatibilityCheck() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("enumEntriesInCompanion.kt")
|
||||
public void testEnumEntriesInCompanion() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/enum/enumEntriesInCompanion.kt");
|
||||
|
||||
Reference in New Issue
Block a user