From 991a3d9dec90a08a66d5c725a7d42328f5129228 Mon Sep 17 00:00:00 2001 From: James Strachan Date: Fri, 23 Dec 2011 15:52:37 +0000 Subject: [PATCH] added proper map with default size passed in for Collection/Array but also added to Iterable and java.util.Iterable with no size; so the collection/iterable methods are now I think replicated; just need iterator methods now --- stdlib/ktSrc/generated/ArraysFromJavaCollections.kt | 2 +- .../ktSrc/generated/StandardFromJavaCollections.kt | 11 +++++++++++ testlib/test/GenerateStandardLib.kt | 12 ++++++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 stdlib/ktSrc/generated/StandardFromJavaCollections.kt diff --git a/stdlib/ktSrc/generated/ArraysFromJavaCollections.kt b/stdlib/ktSrc/generated/ArraysFromJavaCollections.kt index 325a815df87..12db122013e 100644 --- a/stdlib/ktSrc/generated/ArraysFromJavaCollections.kt +++ b/stdlib/ktSrc/generated/ArraysFromJavaCollections.kt @@ -1,5 +1,5 @@ // NOTE this file is auto-generated from stdlib/ktSrc/JavaCollections.kt -package std.util +package std import java.util.* diff --git a/stdlib/ktSrc/generated/StandardFromJavaCollections.kt b/stdlib/ktSrc/generated/StandardFromJavaCollections.kt new file mode 100644 index 00000000000..e94ec1d52d3 --- /dev/null +++ b/stdlib/ktSrc/generated/StandardFromJavaCollections.kt @@ -0,0 +1,11 @@ +// NOTE this file is auto-generated from stdlib/ktSrc/JavaCollections.kt +package std + +import java.util.* + +/** Returns a new collection containing the results of applying the given function to each element in this collection */ +inline fun Iterable.map(result: Collection = ArrayList(), transform : (T) -> R) : Collection { + for (item in this) + result.add(transform(item)) + return result +} diff --git a/testlib/test/GenerateStandardLib.kt b/testlib/test/GenerateStandardLib.kt index f835ccdf493..ee1b3b21b5b 100644 --- a/testlib/test/GenerateStandardLib.kt +++ b/testlib/test/GenerateStandardLib.kt @@ -57,6 +57,7 @@ fun main(args: Array) { val outDir = File(srcDir, "generated") + // JavaIterables - Generic iterable stuff generateFile(File(outDir, "ArraysFromJavaIterables.kt"), "package std", File(srcDir, "JavaIterables.kt")) { it.replaceAll("java.lang.Iterable", "Array") } @@ -65,11 +66,18 @@ fun main(args: Array) { it.replaceAll("java.lang.Iterable", "Iterable") } + + // JavaCollections - methods returning a collection of the same input size (if its a collection) + + generateFile(File(outDir, "ArraysFromJavaCollections.kt"), "package std", File(srcDir, "JavaCollections.kt")) { + it.replaceAll("java.util.Collection", "Array") + } + generateFile(File(outDir, "JavaUtilIterablesFromJavaCollections.kt"), "package std.util", File(srcDir, "JavaCollections.kt")) { it.replaceAll("java.util.Collection", "java.lang.Iterable").replaceAll("(this.size)", "") } - generateFile(File(outDir, "ArraysFromJavaCollections.kt"), "package std.util", File(srcDir, "JavaCollections.kt")) { - it.replaceAll("java.util.Collection", "Array") + generateFile(File(outDir, "StandardFromJavaCollections.kt"), "package std", File(srcDir, "JavaCollections.kt")) { + it.replaceAll("java.util.Collection", "Iterable").replaceAll("(this.size)", "") } } \ No newline at end of file