summary refs log tree commit diff stats
path: root/tests/sets/twrongenumrange.nim
blob: fc90c142fd792dc2fa0de717f56ee4a81b6fcadb (plain) (blame)
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
discard """
  cmd: "nim check --hints:off $file"
"""

# issue #17848

block:
  # generate with:
  # var a = ""
  # for i in 0..<80: a.add "k" & $i & ", "
  # echo a
  type
    TMsgKind = enum
      k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71, k72, k73, k74, k75, k76, k77, k78, k79
  type
    TNoteKind = range[k10..k79]
    Conf = ref object
      notes: set[TNoteKind]
  proc bad(conf: Conf, noteSet: set[TMsgKind]) =
    conf.notes = noteSet #[tt.Error
                 ^ type mismatch: got <set[TMsgKind]> but expected 'set[TNoteKind]']#
  var conf = Conf()
  bad(conf, {k10..k60})

block:
  type
    TMsgKind = enum k0, k1, k2, k3
    TNoteKind = range[k1..k2]
    TNoteKinds = set[TNoteKind]
  type Conf = ref object
    notes: TNoteKinds
  proc fn(conf: Conf, b: set[TMsgKind]) =
    conf.notes = b #[tt.Error
                 ^ type mismatch: got <set[TMsgKind]> but expected 'TNoteKinds = set[TNoteKind]']#
  var conf = Conf()
  conf.fn({k0..k3}) # BUG: this should give error
  echo conf.notes # {k1, k2}

block:
  #[
  compiler/bitsets.nim(43, 9) `elem >= 0`  [AssertionDefect]
  ]#
  type
    TMsgKind = enum k0, k1, k2, k3
    TNoteKind = range[k1..k2]
  var notes: set[TNoteKind]
  notes = {k0} #[tt.Error
           ^ cannot convert 'k0' to 'TNoteKind = range 1..2(TMsgKind)]#
  notes = {k0..k3} #[tt.Error
           ^ cannot convert 'k0' to 'TNoteKind = range 1..2(TMsgKind)'; tt.Error
               ^ cannot convert 'k3' to 'TNoteKind = range 1..2(TMsgKind)']#