mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-04 12:07:51 +00:00
fixes #24844 it may not be used in other places except in `genTraverseProc`, we have to generate a `typedesc` for this case, not a weak `typedec`
This commit is contained in:
@@ -2001,6 +2001,9 @@ proc genTypeInfoV1(m: BModule; t: PType; info: TLineInfo): Rope =
|
||||
of tyRef:
|
||||
genTypeInfoAux(m, t, t, result, info)
|
||||
if m.config.selectedGC in {gcMarkAndSweep, gcRefc, gcGo}:
|
||||
# it may not be used in other places except in `genTraverseProc`,
|
||||
# we have to generate a typedesc for this case, not a weak one
|
||||
discard getTypeDesc(m, origType.last)
|
||||
let markerProc = genTraverseProc(m, origType, sig)
|
||||
m.s[cfsTypeInit3].addFieldAssignment(tiNameForHcr(m, result), "marker", markerProc)
|
||||
of tyPtr, tyRange, tyUncheckedArray: genTypeInfoAux(m, t, t, result, info)
|
||||
|
||||
8
tests/refc/m24844.nim
Normal file
8
tests/refc/m24844.nim
Normal file
@@ -0,0 +1,8 @@
|
||||
type
|
||||
S*[T] = ref object of RootObj
|
||||
k: string
|
||||
A*[T] = ref object of S[T]
|
||||
|
||||
proc p*[T](): S[T] = S[T]()
|
||||
proc u*() = discard A[int]()
|
||||
discard A[int]()
|
||||
11
tests/refc/t24844.nim
Normal file
11
tests/refc/t24844.nim
Normal file
@@ -0,0 +1,11 @@
|
||||
discard """
|
||||
matrix: "--mm:refc; --mm:arc"
|
||||
joinable: false
|
||||
"""
|
||||
|
||||
import m24844
|
||||
|
||||
u()
|
||||
|
||||
type E = distinct int
|
||||
discard p[E]()
|
||||
Reference in New Issue
Block a user