Skip to content

Commit

Permalink
fixes #6724
Browse files Browse the repository at this point in the history
  • Loading branch information
Araq committed Nov 18, 2017
1 parent e96189c commit d072229
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 3 deletions.
6 changes: 3 additions & 3 deletions compiler/transf.nim
Expand Up @@ -365,21 +365,21 @@ 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]
if m.kind == a or m.kind == b:
# 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 =
Expand Down
33 changes: 33 additions & 0 deletions tests/ccgbugs/trefseqsort.nim
@@ -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()

0 comments on commit d072229

Please sign in to comment.