File: typedescs.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 (22 lines) | stat: -rw-r--r-- 578 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
# bug #1774
proc p(T: typedesc) = discard

p(type((5, 6)))       # Compiles
(type((5, 6))).p      # Doesn't compile (SIGSEGV: Illegal storage access.)
type T = type((5, 6)) # Doesn't compile (SIGSEGV: Illegal storage access.)

block: # issue #21677
  type
    Uints = uint16|uint32

  template constructor(name: untyped, typ: typedesc[Uints], typ2: typedesc[Uints]) =
    type
      name = object
        data: typ
        data2: typ2

    proc `init name`(data: typ, data2: typ2): name =
      result.data = data
      result.data2 = data2

  constructor(Test, uint32, uint16)