From 1db21721ec816e01ef91633941e0295f7724e1f7 Mon Sep 17 00:00:00 2001 From: Neelesh Chandola Date: Thu, 5 Dec 2019 22:01:51 +0530 Subject: Fixed objects being erroneously zeroed out before object construction (#12814) [backport] --- compiler/aliases.nim | 3 +++ tests/objects/t12753.nim | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 tests/objects/t12753.nim diff --git a/compiler/aliases.nim b/compiler/aliases.nim index 34b81cbad..0006c9fe6 100644 --- a/compiler/aliases.nim +++ b/compiler/aliases.nim @@ -193,4 +193,7 @@ proc isPartOf*(a, b: PNode): TAnalysisResult = if res != arNo: result = res if res == arYes: break + of nkBracket: + if b.len > 0: + result = isPartOf(a, b[0]) else: discard diff --git a/tests/objects/t12753.nim b/tests/objects/t12753.nim new file mode 100644 index 000000000..1009433be --- /dev/null +++ b/tests/objects/t12753.nim @@ -0,0 +1,22 @@ +discard """ + output: ''' +(v: [(v: [0.0, 1.1]), (v: [2.2, 3.3])]) +(v: [(v: [0.0, 1.1]), (v: [2.2, 3.3])]) +''' +""" + +type + V = object + v:array[2,float] + M = object + v:array[2,V] + +var + a = M(v:[ V(v:[0.0,1.0]), V(v:[2.0,3.0]) ]) + b = M(v:[ V(v:[0.0,0.1]), V(v:[0.2,0.3]) ]) + +echo M(v: [V(v: [b.v[0].v[0] + a.v[0].v[0], b.v[0].v[1] + a.v[0].v[1]]), + V(v: [b.v[1].v[0] + a.v[1].v[0], b.v[1].v[1] + a.v[1].v[1]])]) +b = M(v: [V(v: [b.v[0].v[0] + a.v[0].v[0], b.v[0].v[1] + a.v[0].v[1]]), + V(v: [b.v[1].v[0] + a.v[1].v[0], b.v[1].v[1] + a.v[1].v[1]])]) +echo b -- cgit 1.4.1-2-gfad0