fperrad/lua — Issue #4: [BUG] Local Variable Scope Should Include Loop Condition
Author: soh-cah-toa
Created: 2011-10-19 22:09:28+00:00
State: open

There's an example in *Programming Lua, 2nd Edition* that looks like (with a few subtle modifications):

```lua
local x = 10000
local sqr = x / 2

repeat
sqr = (sqr + x / sqr) / 2
local err = math.abs(sqr^2 - x)

print(x)

x = x - 1
until err < x / 10000
```

The output should be:

```
10000
9999
9998
9997
9996
9995
9994
9993
9992
```

However, `parrot-lua` spits out a runtime error:

```
10000
lua.pbc: example.lua:9: attempt to compare nil with number
stack traceback:
example.lua:9: in main chunk
[PIR]: in function 'docall'
[PIR]: in function 'handle_script'
[PIR]: in function 'main'
```

In Lua, the scope of local variables declared inside a loop includes the condition as well. However, it seems that `parrot-lua` does not know about this common mistake.

Note that this behavior is new in Lua 5.1.