Implement String#split (#301)

This commit is contained in:
Max Graey
2018-10-18 20:05:35 +03:00
committed by Daniel Wirtz
parent 086d96b299
commit 711f73b15d
13 changed files with 7436 additions and 3257 deletions

View File

@ -132,7 +132,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 16)
(i32.const 239)
(i32.const 244)
(i32.const 4)
)
(unreachable)

View File

@ -225,7 +225,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 16)
(i32.const 239)
(i32.const 244)
(i32.const 4)
)
(unreachable)

View File

@ -7930,7 +7930,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 1616)
(i32.const 106)
(i32.const 110)
(i32.const 4)
)
(unreachable)
@ -8104,7 +8104,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 1616)
(i32.const 264)
(i32.const 269)
(i32.const 4)
)
(unreachable)

View File

@ -12670,7 +12670,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 1616)
(i32.const 54)
(i32.const 58)
(i32.const 4)
)
(unreachable)
@ -12764,7 +12764,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 1616)
(i32.const 106)
(i32.const 110)
(i32.const 4)
)
(unreachable)
@ -13051,7 +13051,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 1616)
(i32.const 264)
(i32.const 269)
(i32.const 4)
)
(unreachable)

View File

@ -13,6 +13,8 @@
(global $~lib/internal/allocator/AL_SIZE i32 (i32.const 8))
(global $~lib/internal/allocator/AL_MASK i32 (i32.const 7))
(global $~lib/internal/allocator/MAX_SIZE_32 i32 (i32.const 1073741824))
(global $~lib/internal/arraybuffer/HEADER_SIZE i32 (i32.const 8))
(global $~lib/internal/arraybuffer/MAX_BLENGTH i32 (i32.const 1073741816))
(global $~lib/internal/string/HEADER_SIZE i32 (i32.const 4))
(global $~lib/internal/string/MAX_LENGTH i32 (i32.const 536870910))
(global $~lib/internal/hash/FNV_OFFSET i32 (i32.const -2128831035))

View File

@ -2365,7 +2365,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 72)
(i32.const 450)
(i32.const 510)
(i32.const 8)
)
(unreachable)
@ -2440,7 +2440,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 72)
(i32.const 454)
(i32.const 514)
(i32.const 8)
)
(unreachable)
@ -2559,7 +2559,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 72)
(i32.const 466)
(i32.const 526)
(i32.const 8)
)
(unreachable)
@ -2645,7 +2645,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 72)
(i32.const 475)
(i32.const 535)
(i32.const 4)
)
(unreachable)

View File

@ -2911,7 +2911,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 72)
(i32.const 450)
(i32.const 510)
(i32.const 8)
)
(unreachable)
@ -2988,7 +2988,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 72)
(i32.const 454)
(i32.const 514)
(i32.const 8)
)
(unreachable)
@ -3132,7 +3132,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 72)
(i32.const 466)
(i32.const 526)
(i32.const 8)
)
(unreachable)
@ -3225,7 +3225,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 72)
(i32.const 475)
(i32.const 535)
(i32.const 4)
)
(unreachable)

File diff suppressed because it is too large Load Diff

View File

@ -51,6 +51,8 @@ assert("abc".padEnd(8, "abc") == "abcabcab");
assert("".indexOf("") == 0);
assert("".indexOf("hi") == -1);
assert("a".indexOf("a") == 0);
assert(str.indexOf(str) == 0);
assert(str.indexOf("") == 0);
assert(str.indexOf(",") == 2);
assert(str.indexOf("x") == -1);
@ -131,6 +133,41 @@ assert("a".repeat(5) == "aaaaa");
assert("a".repeat(6) == "aaaaaa");
assert("a".repeat(7) == "aaaaaaa");
var sa: string[];
sa = "".split();
assert(sa.length == 1 && sa[0] == "");
sa = "".split("");
assert(sa.length == 0);
sa = "".split(",");
assert(sa.length == 1 && sa[0] == "");
sa = "a,b,c".split(".");
assert(sa.length == 1 && sa[0] == "a,b,c");
sa = "a,b,c".split(",");
assert(sa.length == 3 && sa[0] == "a" && sa[1] == "b" && sa[2] == "c");
sa = "a, b, c".split(", ");
assert(sa.length == 3 && sa[0] == "a" && sa[1] == "b" && sa[2] == "c");
sa = "a,b,,c".split(",");
assert(sa.length == 4 && sa[0] == "a" && sa[1] == "b" && sa[2] == "" && sa[3] == "c");
sa = ",a,b,c".split(",");
assert(sa.length == 4 && sa[0] == "" && sa[1] == "a" && sa[2] == "b" && sa[3] == "c");
sa = "a,b,c,".split(",");
assert(sa.length == 4 && sa[0] == "a" && sa[1] == "b" && sa[2] == "c" && sa[3] == "");
sa = "abc".split("");
assert(sa.length == 3 && sa[0] == "a" && sa[1] == "b" && sa[2] == "c");
sa = "abc".split("", 0);
assert(sa.length == 0);
sa = "abc".split("", 1);
assert(sa.length == 1 && sa[0] == "a");
sa = "a,b,c".split(",", 1);
assert(sa.length == 1 && sa[0] == "a");
sa = "abc".split("", 4);
assert(sa.length == 3 && sa[0] == "a" && sa[1] == "b" && sa[2] == "c");
sa = "abc".split("", -1);
assert(sa.length == 3 && sa[0] == "a" && sa[1] == "b" && sa[2] == "c");
sa = "a,b,c".split(",", -1);
assert(sa.length == 3 && sa[0] == "a" && sa[1] == "b" && sa[2] == "c");
assert(itoa32(0) == "0");
assert(itoa32(1) == "1");
assert(itoa32(8) == "8");

File diff suppressed because it is too large Load Diff