File: tslices.nim

package info (click to toggle)
nim 2.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,911,644 kB
  • sloc: sh: 24,603; ansic: 1,761; python: 1,492; makefile: 1,013; sql: 298; asm: 141; xml: 13
file content (65 lines) | stat: -rw-r--r-- 1,125 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
discard """
output: '''
456456
456456
456456
Zugr5nd
egerichtetd
verichtetd
'''
"""

# Test the new slices.

var mystr = "Abgrund"
# mystr[..1] = "Zu" # deprecated
mystr[0..1] = "Zu"

mystr[4..4] = "5"

type
  TEnum = enum e1, e2, e3, e4, e5, e6

var myarr: array[TEnum, int] = [1, 2, 3, 4, 5, 6]
myarr[e1..e3] = myarr[e4..e6]
# myarr[..e3] = myarr[e4..e6] # deprecated
myarr[0..e3] = myarr[e4..e6]

for x in items(myarr): stdout.write(x)
echo()

var myarr2: array[0..5, int] = [1, 2, 3, 4, 5, 6]
myarr2[0..2] = myarr2[3..5]

for x in items(myarr2): stdout.write(x)
echo()


var myseq = @[1, 2, 3, 4, 5, 6]
myseq[0..2] = myseq[^3 .. ^1]

for x in items(myseq): stdout.write(x)
echo()

echo mystr

mystr[4..4] = "u"

# test full replacement
# mystr[.. ^2] = "egerichtet"  # deprecated
mystr[0 .. ^2] = "egerichtet"

echo mystr

mystr[0..2] = "ve"
echo mystr

var s = "abcdef"
s[1 .. ^2] = "xyz"
assert s == "axyzf"

# issue mentioned in PR #19219
type Foo = distinct uint64
# < here calls `pred` which used to cause a codegen error
# `pred` compiles because distinct ordinals are considered ordinal
const slice = 0 ..< 42.Foo