diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2020-09-27 20:44:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-27 20:44:22 +0200 |
commit | f1ac01459cfecdaa26fd26128bb586236d4ba24e (patch) | |
tree | a9273ea023b88c03b2006310ac57c0f5a0f040a3 /tests/views/tsplit_into_seq.nim | |
parent | 0ea559611d7cd4ba907a668af01302d52fa3eab9 (diff) | |
download | Nim-f1ac01459cfecdaa26fd26128bb586236d4ba24e.tar.gz |
produce runtime type information for reified openArrays (#15415)
* produce runtime type information for reified openArrays * added a test case
Diffstat (limited to 'tests/views/tsplit_into_seq.nim')
-rw-r--r-- | tests/views/tsplit_into_seq.nim | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/views/tsplit_into_seq.nim b/tests/views/tsplit_into_seq.nim new file mode 100644 index 000000000..409451601 --- /dev/null +++ b/tests/views/tsplit_into_seq.nim @@ -0,0 +1,42 @@ +discard """ + output: '''asdf +asdf +231 +231 +''' + cmd: "nim c $file" +""" + +{.experimental: "views".} + +const + Whitespace = {' ', '\t', '\n', '\r'} + +proc split*(s: string, seps: set[char] = Whitespace, + maxsplit: int = -1): seq[openArray[char]] = + var last = 0 + var splits = maxsplit + result = @[] + + while last <= len(s): + var first = last + while last < len(s) and s[last] notin seps: + inc(last) + if splits == 0: last = len(s) + {.noSideEffect.}: + result.add toOpenArray(s, first, last-1) + result.add toOpenArray(s, first, last-1) + if splits == 0: break + dec(splits) + inc(last) + +proc `$`(x: openArray[char]): string = + result = newString(x.len) + for i in 0..<x.len: result[i] = x[i] + +proc main() = + let words = split("asdf 231") + for x in words: + echo x + +main() |