Skip to content

Commit

Permalink
fixes #12747 [backport] (#13651)
Browse files Browse the repository at this point in the history
* fixes #12747
* fix tests
* improve code style

Co-authored-by: cooldome <[email protected]>
  • Loading branch information
cooldome and cooldome authored Mar 16, 2020
1 parent fe53f6e commit 613ea6e
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 5 deletions.
15 changes: 12 additions & 3 deletions compiler/transf.nim
Original file line number Diff line number Diff line change
Expand Up @@ -565,10 +565,19 @@ proc putArgInto(arg: PNode, formal: PType): TPutArgInto =
case arg.kind
of nkEmpty..nkNilLit:
result = paDirectMapping
of nkPar, nkTupleConstr, nkCurly, nkBracket:
result = paFastAsgn
of nkDotExpr, nkDerefExpr, nkHiddenDeref, nkAddr, nkHiddenAddr:
result = putArgInto(arg[0], formal)
of nkCurly, nkBracket:
for i in 0..<arg.len:
if putArgInto(arg[i], formal) != paDirectMapping: return
if putArgInto(arg[i], formal) != paDirectMapping:
return paFastAsgn
result = paDirectMapping
of nkPar, nkTupleConstr, nkObjConstr:
for i in 0..<arg.len:
let a = if arg[i].kind == nkExprColonExpr: arg[i][1]
else: arg[0]
if putArgInto(a, formal) != paDirectMapping:
return paFastAsgn
result = paDirectMapping
else:
if skipTypes(formal, abstractInst).kind in {tyVar, tyLent}: result = paVarAsgn
Expand Down
2 changes: 1 addition & 1 deletion tests/destructor/tgcdestructors.nim
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ a: @[4, 2, 3]
0
30
true
(allocCount: 41, deallocCount: 41)'''
(allocCount: 40, deallocCount: 40)'''
"""

include system / ansi_c
Expand Down
2 changes: 1 addition & 1 deletion tests/destructor/twidgets_unown.nim
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ discard """
cmd: '''nim c -d:nimAllocStats --newruntime $file'''
output: '''button
clicked!
(allocCount: 9, deallocCount: 9)'''
(allocCount: 7, deallocCount: 7)'''
"""

import system / ansi_c
Expand Down
11 changes: 11 additions & 0 deletions tests/iter/titer11.nim
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,14 @@ var output = represent(s)

for item in output():
echo item


#------------------------------------------------------------------------------
# Issue #12747

type
ABC = ref object
arr: array[0x40000, pointer]
let a = ABC()
for a in a.arr:
assert a == nil

0 comments on commit 613ea6e

Please sign in to comment.