From 1d01e66fc87297eacc84d9f90951b2e5449221df Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 23 Aug 2012 20:49:08 +0400 Subject: [PATCH] Tests for multi-decl for-loops over arrays of primitives --- .../int/MultiDeclForComponentExtensions.kt | 16 ++++++ .../MultiDeclForComponentMemberExtensions.kt | 18 ++++++ ...nentMemberExtensionsInExtensionFunction.kt | 18 ++++++ .../long/MultiDeclForComponentExtensions.kt | 16 ++++++ .../MultiDeclForComponentMemberExtensions.kt | 18 ++++++ ...nentMemberExtensionsInExtensionFunction.kt | 18 ++++++ .../jet/codegen/MultiDeclTestGenerated.java | 55 ++++++++++++++++++- 7 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentExtensions.kt create mode 100644 compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentMemberExtensions.kt create mode 100644 compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt create mode 100644 compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentExtensions.kt create mode 100644 compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentMemberExtensions.kt create mode 100644 compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt diff --git a/compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentExtensions.kt b/compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentExtensions.kt new file mode 100644 index 00000000000..fb9e0ad2b4d --- /dev/null +++ b/compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentExtensions.kt @@ -0,0 +1,16 @@ +fun Int.component1() = this + 1 +fun Int.component2() = this + 2 + +fun doTest(l : Array): String { + var s = "" + for ((a, b) in l) { + s += "$a:$b;" + } + return s +} + +fun box(): String { + val l = Array(3, {x -> x}) + val s = doTest(l) + return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s" +} \ No newline at end of file diff --git a/compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentMemberExtensions.kt b/compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentMemberExtensions.kt new file mode 100644 index 00000000000..73a508d2641 --- /dev/null +++ b/compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentMemberExtensions.kt @@ -0,0 +1,18 @@ +class M { + fun Int.component1() = this + 1 + fun Int.component2() = this + 2 + + fun doTest(l : Array): String { + var s = "" + for ((a, b) in l) { + s += "$a:$b;" + } + return s + } +} + +fun box(): String { + val l = Array(3, {x -> x}) + val s = M().doTest(l) + return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s" +} \ No newline at end of file diff --git a/compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt b/compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt new file mode 100644 index 00000000000..c4473762c3d --- /dev/null +++ b/compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt @@ -0,0 +1,18 @@ +class M { + fun Int.component1() = this + 1 + fun Int.component2() = this + 2 +} + +fun M.doTest(l : Array): String { + var s = "" + for ((a, b) in l) { + s += "$a:$b;" + } + return s +} + +fun box(): String { + val l = Array(3, {x -> x}) + val s = M().doTest(l) + return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s" +} \ No newline at end of file diff --git a/compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentExtensions.kt b/compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentExtensions.kt new file mode 100644 index 00000000000..b44769aeb7b --- /dev/null +++ b/compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentExtensions.kt @@ -0,0 +1,16 @@ +fun Long.component1() = this + 1 +fun Long.component2() = this + 2 + +fun doTest(l : Array): String { + var s = "" + for ((a, b) in l) { + s += "$a:$b;" + } + return s +} + +fun box(): String { + val l = Array(3, {x -> x.toLong()}) + val s = doTest(l) + return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s" +} \ No newline at end of file diff --git a/compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentMemberExtensions.kt b/compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentMemberExtensions.kt new file mode 100644 index 00000000000..638344c91fd --- /dev/null +++ b/compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentMemberExtensions.kt @@ -0,0 +1,18 @@ +class M { + fun Long.component1() = this + 1 + fun Long.component2() = this + 2 + + fun doTest(l : Array): String { + var s = "" + for ((a, b) in l) { + s += "$a:$b;" + } + return s + } +} + +fun box(): String { + val l = Array(3, {x -> x.toLong()}) + val s = M().doTest(l) + return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s" +} \ No newline at end of file diff --git a/compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt b/compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt new file mode 100644 index 00000000000..b1b646ac6a3 --- /dev/null +++ b/compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt @@ -0,0 +1,18 @@ +class M { + fun Long.component1() = this + 1 + fun Long.component2() = this + 2 +} + +fun M.doTest(l : Array): String { + var s = "" + for ((a, b) in l) { + s += "$a:$b;" + } + return s +} + +fun box(): String { + val l = Array(3, {x -> x.toLong()}) + val s = M().doTest(l) + return if (s == "1:2;2:3;3:4;") "OK" else "fail: $s" +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/MultiDeclTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/MultiDeclTestGenerated.java index 599001e4679..abf07ddd53f 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/MultiDeclTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/MultiDeclTestGenerated.java @@ -113,6 +113,59 @@ public class MultiDeclTestGenerated extends AbstractMultiDeclTestCase { blackBoxFileByFullPath("compiler/testData/codegen/multiDecl/forArray/MultiDeclForValCaptured.kt"); } + @TestMetadata("compiler/testData/codegen/multiDecl/forArray/int") + public static class Int extends AbstractMultiDeclTestCase { + public void testAllFilesPresentInInt() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.codegen.AbstractMultiDeclTestCase", new File("compiler/testData/codegen/multiDecl/forArray/int"), "kt", false); + } + + @TestMetadata("MultiDeclForComponentExtensions.kt") + public void testMultiDeclForComponentExtensions() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentExtensions.kt"); + } + + @TestMetadata("MultiDeclForComponentMemberExtensions.kt") + public void testMultiDeclForComponentMemberExtensions() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentMemberExtensions.kt"); + } + + @TestMetadata("MultiDeclForComponentMemberExtensionsInExtensionFunction.kt") + public void testMultiDeclForComponentMemberExtensionsInExtensionFunction() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/multiDecl/forArray/int/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt"); + } + + } + + @TestMetadata("compiler/testData/codegen/multiDecl/forArray/long") + public static class Long extends AbstractMultiDeclTestCase { + public void testAllFilesPresentInLong() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.codegen.AbstractMultiDeclTestCase", new File("compiler/testData/codegen/multiDecl/forArray/long"), "kt", false); + } + + @TestMetadata("MultiDeclForComponentExtensions.kt") + public void testMultiDeclForComponentExtensions() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentExtensions.kt"); + } + + @TestMetadata("MultiDeclForComponentMemberExtensions.kt") + public void testMultiDeclForComponentMemberExtensions() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentMemberExtensions.kt"); + } + + @TestMetadata("MultiDeclForComponentMemberExtensionsInExtensionFunction.kt") + public void testMultiDeclForComponentMemberExtensionsInExtensionFunction() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/multiDecl/forArray/long/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt"); + } + + } + + public static Test innerSuite() { + TestSuite suite = new TestSuite("ForArray"); + suite.addTestSuite(ForArray.class); + suite.addTestSuite(Int.class); + suite.addTestSuite(Long.class); + return suite; + } } @TestMetadata("compiler/testData/codegen/multiDecl/forIterator") @@ -151,7 +204,7 @@ public class MultiDeclTestGenerated extends AbstractMultiDeclTestCase { public static Test suite() { TestSuite suite = new TestSuite("MultiDeclTestGenerated"); suite.addTestSuite(MultiDeclTestGenerated.class); - suite.addTestSuite(ForArray.class); + suite.addTest(ForArray.innerSuite()); suite.addTestSuite(ForIterator.class); return suite; }