This commit is contained in:
Andreas Rumpf
2017-11-19 00:37:36 +01:00
parent e96189c9c3
commit d072229975
2 changed files with 36 additions and 3 deletions

View File

@@ -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 =

View 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()