summary refs log tree commit diff stats
path: root/tests/ccgbugs/tlvalueconv.nim
blob: b2cb11eefb5dfcbe63fa3a90e49b7e47ffa98d42 (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
discard """
  matrix: "--gc:refc; --gc:arc"
"""

# bug #14160

type
  TPassContext = object of RootObj
  PPassContext = ref TPassContext

  PCtx = ref object of TPassContext
    a: int

  ModuleGraph = object
    vm: RootRef

proc main() =
  var g = ModuleGraph(vm: new(Pctx))
  PCtx(g.vm) = nil #This generates invalid C code
  doAssert g.vm == nil

main()

# bug #14325

proc main2() =
  var g = ModuleGraph(vm: new(Pctx))
  PPassContext(PCtx(g.vm)) = nil #This compiles, but crashes at runtime with gc:arc
  doAssert g.vm == nil

main2()