File: tdistinctseq.nim

package info (click to toggle)
nim 2.2.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,951,160 kB
  • sloc: sh: 24,599; ansic: 1,771; python: 1,493; makefile: 1,013; sql: 298; asm: 141; xml: 13
file content (31 lines) | stat: -rw-r--r-- 635 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
discard """
  matrix: "-u:nimPreviewNonVarDestructor;"
"""
type DistinctSeq* = distinct seq[int]

# `=destroy`(cast[ptr DistinctSeq](0)[])
var x = @[].DistinctSeq
`=destroy`(x)


import std/options

# bug #24801
type
  B[T] = object
    case r: bool
    of false:
      v: ref int
    of true:
      x: T
  E = distinct seq[int]
  U = ref object of RootObj
  G = ref object of U

proc a(): E = default(E)
method c(_: U): seq[E] {.base.} = discard
proc p(): seq[E] = c(default(U))
method c(_: G): seq[E] = discard E(newSeq[seq[int]](1)[0])
method y(_: U) {.base.} =
  let s = default(B[tuple[f: B[int], w: B[int]]])
  discard some(s.x)