From 9a8f2edda45ff26f90f1b5252338fb6b9cf4dcf7 Mon Sep 17 00:00:00 2001 From: Bob Nystrom Date: Sun, 6 Apr 2014 08:37:37 -0700 Subject: [PATCH] List.addAll(). --- builtin/core.wren | 7 +++++++ src/wren_core.c | 7 +++++++ test/list/add.wren | 4 +--- test/list/add_all.wren | 11 +++++++++++ 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 test/list/add_all.wren diff --git a/builtin/core.wren b/builtin/core.wren index bdc5c188..8031f8fe 100644 --- a/builtin/core.wren +++ b/builtin/core.wren @@ -17,6 +17,13 @@ class Sequence { } class List is Sequence { + addAll(other) { + for (element in other) { + add(element) + } + return other + } + toString { var result = "[" for (i in 0...count) { diff --git a/src/wren_core.c b/src/wren_core.c index 996c4d0f..a1ce4080 100644 --- a/src/wren_core.c +++ b/src/wren_core.c @@ -60,6 +60,13 @@ static const char* libSource = "}\n" "\n" "class List is Sequence {\n" +" addAll(other) {\n" +" for (element in other) {\n" +" add(element)\n" +" }\n" +" return other\n" +" }\n" +"\n" " toString {\n" " var result = \"[\"\n" " for (i in 0...count) {\n" diff --git a/test/list/add.wren b/test/list/add.wren index a9785246..33025499 100644 --- a/test/list/add.wren +++ b/test/list/add.wren @@ -1,6 +1,4 @@ -var a = [] -a.add(1) -IO.print(a) // expect: [1] +var a = [1] a.add(2) IO.print(a) // expect: [1, 2] a.add(3) diff --git a/test/list/add_all.wren b/test/list/add_all.wren new file mode 100644 index 00000000..1d79b852 --- /dev/null +++ b/test/list/add_all.wren @@ -0,0 +1,11 @@ +var a = [1] +a.addAll([2, 3]) +IO.print(a) // expect: [1, 2, 3] +a.addAll([]) +IO.print(a) // expect: [1, 2, 3] +a.addAll(4..6) +IO.print(a) // expect: [1, 2, 3, 4, 5, 6] + +// Returns argument. +var range = 7..9 +IO.print(a.addAll(range) == range) // expect: true