fix #5968
This commit is contained in:
parent
24966e006a
commit
b199c5af4e
2 changed files with 23 additions and 1 deletions
|
|
@ -665,7 +665,9 @@ proc genDeref(p: BProc, e: PNode, d: var TLoc; enforceDeref=false) =
|
||||||
d.s = OnHeap
|
d.s = OnHeap
|
||||||
else:
|
else:
|
||||||
var a: TLoc
|
var a: TLoc
|
||||||
let typ = skipTypes(e.sons[0].typ, abstractInst)
|
var typ = skipTypes(e.sons[0].typ, abstractInst)
|
||||||
|
if typ.kind in {tyUserTypeClass, tyUserTypeClassInst} and typ.isResolvedUserTypeClass:
|
||||||
|
typ = typ.lastSon
|
||||||
if typ.kind == tyVar and tfVarIsPtr notin typ.flags and p.module.compileToCpp and e.sons[0].kind == nkHiddenAddr:
|
if typ.kind == tyVar and tfVarIsPtr notin typ.flags and p.module.compileToCpp and e.sons[0].kind == nkHiddenAddr:
|
||||||
initLocExprSingleUse(p, e[0][0], d)
|
initLocExprSingleUse(p, e[0][0], d)
|
||||||
return
|
return
|
||||||
|
|
|
||||||
20
tests/concepts/t5968.nim
Normal file
20
tests/concepts/t5968.nim
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
discard """
|
||||||
|
exitcode: 0
|
||||||
|
"""
|
||||||
|
|
||||||
|
type
|
||||||
|
Enumerable[T] = concept e
|
||||||
|
for it in e:
|
||||||
|
it is T
|
||||||
|
|
||||||
|
proc cmap[T, G](e: Enumerable[T], fn: proc(t: T): G): seq[G] =
|
||||||
|
result = @[]
|
||||||
|
for it in e: result.add(fn(it))
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
|
var x = %["hello", "world"]
|
||||||
|
|
||||||
|
var z = x.cmap(proc(it: JsonNode): string = it.getStr & "!")
|
||||||
|
assert z == @["hello!", "world!"]
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue