From 1ba3dbc7595a40bdb68973d0863c904657ca28f6 Mon Sep 17 00:00:00 2001 From: Araq Date: Sun, 29 Jan 2012 13:38:23 +0100 Subject: [PATCH] bugfix tests/tzeroarray --- compiler/cgen.nim | 3 +++ tests/run/tzeroarray.nim | 18 ++++++++++++++++++ todo.txt | 1 + 3 files changed, 22 insertions(+) create mode 100644 tests/run/tzeroarray.nim diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 6a5d890a8..5de2481ed 100755 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -405,6 +405,9 @@ proc assignGlobalVar(p: BProc, s: PSym) = if sfRegister in s.flags: app(p.module.s[cfsVars], " register") if sfVolatile in s.flags: app(p.module.s[cfsVars], " volatile") appf(p.module.s[cfsVars], " $1;$n", [s.loc.r]) + if p.withinLoop > 0: + # fixes tests/run/tzeroarray: + initLocalVar(p, s, false) if p.module.module.options * {optStackTrace, optEndb} == {optStackTrace, optEndb}: appcg(p.module, p.module.s[cfsDebugInit], diff --git a/tests/run/tzeroarray.nim b/tests/run/tzeroarray.nim new file mode 100644 index 000000000..7f66007b5 --- /dev/null +++ b/tests/run/tzeroarray.nim @@ -0,0 +1,18 @@ +discard """ + output: 'done' +""" + +for i in 0 .. 1: + var a: array[0..4, int] + if a[0] != 0: quit "bug" + a[0] = 6 + +proc main = + for i in 0 .. 1: + var a: array[0..4, int] + if a[0] != 0: quit "bug" + a[0] = 6 + +main() +echo "done" + diff --git a/todo.txt b/todo.txt index dc9f9c159..22a4c6d97 100755 --- a/todo.txt +++ b/todo.txt @@ -48,6 +48,7 @@ Bugs without ``-d:release`` leaks memory; good way to figure out how a fixed amount of stack can hold an arbitrary number of GC roots! - bug: temp2.nim triggers weird compiler and except.nim bug +- bug: negative array indexes fail to index check version 0.9.XX