mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 21:43:33 +00:00
fixes #6724
This commit is contained in:
@@ -365,7 +365,7 @@ proc transformAddrDeref(c: PTransf, n: PNode, a, b: TNodeKind): PTransNode =
|
||||
# addr ( nkConv ( deref ( x ) ) ) --> nkConv(x)
|
||||
n.sons[0].sons[0] = m.sons[0]
|
||||
result = PTransNode(n.sons[0])
|
||||
if n.typ.kind != tyOpenArray:
|
||||
if n.typ.skipTypes(abstractVar).kind != tyOpenArray:
|
||||
PNode(result).typ = n.typ
|
||||
of nkHiddenStdConv, nkHiddenSubConv, nkConv:
|
||||
var m = n.sons[0].sons[1]
|
||||
@@ -373,13 +373,13 @@ proc transformAddrDeref(c: PTransf, n: PNode, a, b: TNodeKind): PTransNode =
|
||||
# addr ( nkConv ( deref ( x ) ) ) --> nkConv(x)
|
||||
n.sons[0].sons[1] = m.sons[0]
|
||||
result = PTransNode(n.sons[0])
|
||||
if n.typ.kind != tyOpenArray:
|
||||
if n.typ.skipTypes(abstractVar).kind != tyOpenArray:
|
||||
PNode(result).typ = n.typ
|
||||
else:
|
||||
if n.sons[0].kind == a or n.sons[0].kind == b:
|
||||
# addr ( deref ( x )) --> x
|
||||
result = PTransNode(n.sons[0].sons[0])
|
||||
if n.typ.kind != tyOpenArray:
|
||||
if n.typ.skipTypes(abstractVar).kind != tyOpenArray:
|
||||
PNode(result).typ = n.typ
|
||||
|
||||
proc generateThunk(prc: PNode, dest: PType): PNode =
|
||||
|
||||
33
tests/ccgbugs/trefseqsort.nim
Normal file
33
tests/ccgbugs/trefseqsort.nim
Normal file
@@ -0,0 +1,33 @@
|
||||
discard """
|
||||
output: '''@[0, 4, 9, 1, 3, 2]
|
||||
@[0, 1, 2, 3, 9]'''
|
||||
"""
|
||||
# bug #6724
|
||||
import algorithm
|
||||
|
||||
type
|
||||
Bar = object
|
||||
bar: ref seq[int]
|
||||
Foo = ref Bar
|
||||
|
||||
proc test(x: ref Foo) =
|
||||
x.bar[].del(1)
|
||||
x.bar[].sort(cmp)
|
||||
|
||||
proc main() =
|
||||
var foo: ref Foo
|
||||
new(foo)
|
||||
|
||||
var s = @[0, 4, 9, 1, 3, 2]
|
||||
|
||||
var sr: ref seq[int]
|
||||
new(sr)
|
||||
sr[] = s
|
||||
|
||||
foo[] = Foo(bar: sr)
|
||||
echo($foo.bar[])
|
||||
|
||||
test(foo)
|
||||
echo($foo.bar[])
|
||||
|
||||
main()
|
||||
Reference in New Issue
Block a user