From a3fbf2fabc253aa0cb0d9ab487e01176c696d8a6 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 30 Sep 2015 19:29:11 +0300 Subject: [PATCH] Test that primitives, arrays, enums are implicitly serializable on jvm and not js Specifically test calling java function that accepts java.io.Serializable --- .../diagnostics/tests/Serializable.kt | 55 +++++++++++++++++ .../diagnostics/tests/Serializable.txt | 43 +++++++++++++ .../diagnostics/tests/j+k/serializable.kt | 60 +++++++++++++++++++ .../diagnostics/tests/j+k/serializable.txt | 41 +++++++++++++ .../testsWithJsStdLib/Serializable.kt | 55 +++++++++++++++++ .../testsWithJsStdLib/Serializable.txt | 43 +++++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 12 ++++ ...tDiagnosticsTestWithJsStdLibGenerated.java | 6 ++ 8 files changed, 315 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/Serializable.kt create mode 100644 compiler/testData/diagnostics/tests/Serializable.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/serializable.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/serializable.txt create mode 100644 compiler/testData/diagnostics/testsWithJsStdLib/Serializable.kt create mode 100644 compiler/testData/diagnostics/testsWithJsStdLib/Serializable.txt diff --git a/compiler/testData/diagnostics/tests/Serializable.kt b/compiler/testData/diagnostics/tests/Serializable.kt new file mode 100644 index 00000000000..e5afb864445 --- /dev/null +++ b/compiler/testData/diagnostics/tests/Serializable.kt @@ -0,0 +1,55 @@ +fun use(s: java.io.Serializable) { + +} + +fun useList(s: List) { + +} + +fun testPrimitives(b: Byte, ss: Short, i: Int, l: Long, d: Double, s: String, f: Float, bool: Boolean) { + use(b) + use(ss) + use(i) + use(l) + use(s) + use(f) + use(d) + use(bool) +} + +class N +class S: java.io.Serializable + +fun testArrays(ia: IntArray, ai: Array, an: Array, a: Array) { + use(ia) + use(ai) + use(an) + use(a) +} + +fun testLiterals() { + use(1) + use(1.0) + use(11111111111111) + use("Asdsd") + use(true) +} + +fun testNotSerializable(l: List) { + use(l) + use(N()) +} + +enum class C { + E, E2 +} + +fun testEnums(a: Enum<*>) { + use(C.E) + use(C.E2) + use(a) +} + +fun testLists(a: List) { + useList(a) +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/Serializable.txt b/compiler/testData/diagnostics/tests/Serializable.txt new file mode 100644 index 00000000000..7fc36ef25a4 --- /dev/null +++ b/compiler/testData/diagnostics/tests/Serializable.txt @@ -0,0 +1,43 @@ +package + +public fun testArrays(/*0*/ ia: kotlin.IntArray, /*1*/ ai: kotlin.Array, /*2*/ an: kotlin.Array, /*3*/ a: kotlin.Array): kotlin.Unit +public fun testEnums(/*0*/ a: kotlin.Enum<*>): kotlin.Unit +public fun testLists(/*0*/ a: kotlin.List): kotlin.Unit +public fun testLiterals(): kotlin.Unit +public fun testNotSerializable(/*0*/ l: kotlin.List): kotlin.Unit +public fun testPrimitives(/*0*/ b: kotlin.Byte, /*1*/ ss: kotlin.Short, /*2*/ i: kotlin.Int, /*3*/ l: kotlin.Long, /*4*/ d: kotlin.Double, /*5*/ s: kotlin.String, /*6*/ f: kotlin.Float, /*7*/ bool: kotlin.Boolean): kotlin.Unit +public fun use(/*0*/ s: java.io.Serializable): kotlin.Unit +public fun useList(/*0*/ s: kotlin.List): kotlin.Unit + +public final enum class C : kotlin.Enum { + enum entry E + + enum entry E2 + + private constructor C() + protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any + public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: C): kotlin.Int + public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final override /*1*/ /*fake_override*/ fun name(): kotlin.String + public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): C + public final /*synthesized*/ fun values(): kotlin.Array +} + +public final class N { + public constructor N() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class S : java.io.Serializable { + public constructor S() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/tests/j+k/serializable.kt b/compiler/testData/diagnostics/tests/j+k/serializable.kt new file mode 100644 index 00000000000..1f4a6f031e5 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/serializable.kt @@ -0,0 +1,60 @@ +// FILE: B.kt + +import aa.A.use +import aa.A.useList + +fun testPrimitives(b: Byte, ss: Short, i: Int, l: Long, d: Double, s: String, f: Float, bool: Boolean) { + use(b) + use(ss) + use(i) + use(l) + use(s) + use(f) + use(d) + use(bool) +} + +class N +class S: java.io.Serializable + +fun testArrays(ia: IntArray, ai: Array, an: Array, a: Array) { + use(ia) + use(ai) + use(an) + use(a) +} + +fun testLiterals() { + use(1) + use(1.0) + use(11111111111111) + use("Asdsd") + use(true) +} + +fun testNotSerializable(l: List) { + use(l) + use(N()) +} + +enum class C { + E, E2 +} + +fun testEnums(a: Enum<*>) { + use(C.E) + use(C.E2) + use(a) +} + +fun testLists(a: List) { + useList(a) +} + +// FILE: aa/A.java +package aa; + +public class A { + public static void use(java.io.Serializable s) { } + public static void useList(java.util.List s) { } +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/j+k/serializable.txt b/compiler/testData/diagnostics/tests/j+k/serializable.txt new file mode 100644 index 00000000000..40ecac3fab8 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/serializable.txt @@ -0,0 +1,41 @@ +package + +public fun testArrays(/*0*/ ia: kotlin.IntArray, /*1*/ ai: kotlin.Array, /*2*/ an: kotlin.Array, /*3*/ a: kotlin.Array): kotlin.Unit +public fun testEnums(/*0*/ a: kotlin.Enum<*>): kotlin.Unit +public fun testLists(/*0*/ a: kotlin.List): kotlin.Unit +public fun testLiterals(): kotlin.Unit +public fun testNotSerializable(/*0*/ l: kotlin.List): kotlin.Unit +public fun testPrimitives(/*0*/ b: kotlin.Byte, /*1*/ ss: kotlin.Short, /*2*/ i: kotlin.Int, /*3*/ l: kotlin.Long, /*4*/ d: kotlin.Double, /*5*/ s: kotlin.String, /*6*/ f: kotlin.Float, /*7*/ bool: kotlin.Boolean): kotlin.Unit + +public final enum class C : kotlin.Enum { + enum entry E + + enum entry E2 + + private constructor C() + protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any + public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: C): kotlin.Int + public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final override /*1*/ /*fake_override*/ fun name(): kotlin.String + public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): C + public final /*synthesized*/ fun values(): kotlin.Array +} + +public final class N { + public constructor N() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class S : java.io.Serializable { + public constructor S() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/Serializable.kt b/compiler/testData/diagnostics/testsWithJsStdLib/Serializable.kt new file mode 100644 index 00000000000..7707b997718 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/Serializable.kt @@ -0,0 +1,55 @@ +fun use(s: java.io.Serializable) { + +} + +fun useList(s: List) { + +} + +fun testPrimitives(b: Byte, ss: Short, i: Int, l: Long, d: Double, s: String, f: Float, bool: Boolean) { + use(b) + use(ss) + use(i) + use(l) + use(s) + use(f) + use(d) + use(bool) +} + +class N +class S: java.io.Serializable + +fun testArrays(ia: IntArray, ai: Array, an: Array, a: Array) { + use(ia) + use(ai) + use(an) + use(a) +} + +fun testLiterals() { + use(1) + use(1.0) + use(11111111111111) + use("Asdsd") + use(true) +} + +fun testNotSerializable(l: List) { + use(l) + use(N()) +} + +enum class C { + E, E2 +} + +fun testEnums(a: Enum<*>) { + use(C.E) + use(C.E2) + use(a) +} + +fun testLists(a: List) { + useList(a) +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/Serializable.txt b/compiler/testData/diagnostics/testsWithJsStdLib/Serializable.txt new file mode 100644 index 00000000000..7fc36ef25a4 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/Serializable.txt @@ -0,0 +1,43 @@ +package + +public fun testArrays(/*0*/ ia: kotlin.IntArray, /*1*/ ai: kotlin.Array, /*2*/ an: kotlin.Array, /*3*/ a: kotlin.Array): kotlin.Unit +public fun testEnums(/*0*/ a: kotlin.Enum<*>): kotlin.Unit +public fun testLists(/*0*/ a: kotlin.List): kotlin.Unit +public fun testLiterals(): kotlin.Unit +public fun testNotSerializable(/*0*/ l: kotlin.List): kotlin.Unit +public fun testPrimitives(/*0*/ b: kotlin.Byte, /*1*/ ss: kotlin.Short, /*2*/ i: kotlin.Int, /*3*/ l: kotlin.Long, /*4*/ d: kotlin.Double, /*5*/ s: kotlin.String, /*6*/ f: kotlin.Float, /*7*/ bool: kotlin.Boolean): kotlin.Unit +public fun use(/*0*/ s: java.io.Serializable): kotlin.Unit +public fun useList(/*0*/ s: kotlin.List): kotlin.Unit + +public final enum class C : kotlin.Enum { + enum entry E + + enum entry E2 + + private constructor C() + protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any + public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: C): kotlin.Int + public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final override /*1*/ /*fake_override*/ fun name(): kotlin.String + public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): C + public final /*synthesized*/ fun values(): kotlin.Array +} + +public final class N { + public constructor N() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class S : java.io.Serializable { + public constructor S() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java index 4d09ad49912..e77df846704 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java @@ -493,6 +493,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } + @TestMetadata("Serializable.kt") + public void testSerializable() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/Serializable.kt"); + doTest(fileName); + } + @TestMetadata("ShiftFunctionTypes.kt") public void testShiftFunctionTypes() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/ShiftFunctionTypes.kt"); @@ -8898,6 +8904,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } + @TestMetadata("serializable.kt") + public void testSerializable() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/j+k/serializable.kt"); + doTest(fileName); + } + @TestMetadata("Simple.kt") public void testSimple() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/j+k/Simple.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestWithJsStdLibGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestWithJsStdLibGenerated.java index f563cece255..974c36527e4 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestWithJsStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestWithJsStdLibGenerated.java @@ -35,6 +35,12 @@ public class JetDiagnosticsTestWithJsStdLibGenerated extends AbstractJetDiagnost JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithJsStdLib"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("Serializable.kt") + public void testSerializable() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/Serializable.kt"); + doTest(fileName); + } + @TestMetadata("compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)