diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2019-03-21 16:01:55 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2019-03-21 16:01:55 -0300 |
| commit | 682054920ddc434fd4a7f8cc78027dbb03f47f00 (patch) | |
| tree | c1f57903f57c9e13a338b09f2c625020aac31e7b /testes | |
| parent | f53eabeed855081fa38e9af5cf7c977915f5213f (diff) | |
| download | lua-682054920ddc434fd4a7f8cc78027dbb03f47f00.tar.gz lua-682054920ddc434fd4a7f8cc78027dbb03f47f00.tar.bz2 lua-682054920ddc434fd4a7f8cc78027dbb03f47f00.zip | |
Details in the implementation of the integer 'for' loop
Changed some implementation details; in particular, it is back using
an internal variable to keep the index, with the control variable
being only a copy of that internal variable. (The direct use of
the control variable demands a check of its type for each access,
which offsets the gains from the use of a single variable.)
Diffstat (limited to 'testes')
| -rw-r--r-- | testes/nextvar.lua | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/testes/nextvar.lua b/testes/nextvar.lua index e769ccdd..87a6bfa8 100644 --- a/testes/nextvar.lua +++ b/testes/nextvar.lua | |||
| @@ -544,6 +544,12 @@ do | |||
| 544 | a = 0; for i=1.0, 0.99999, -1 do a=a+1 end; assert(a==1) | 544 | a = 0; for i=1.0, 0.99999, -1 do a=a+1 end; assert(a==1) |
| 545 | end | 545 | end |
| 546 | 546 | ||
| 547 | do -- changing the control variable | ||
| 548 | local a | ||
| 549 | a = 0; for i = 1, 10 do a = a + 1; i = "x" end; assert(a == 10) | ||
| 550 | a = 0; for i = 10.0, 1, -1 do a = a + 1; i = "x" end; assert(a == 10) | ||
| 551 | end | ||
| 552 | |||
| 547 | -- conversion | 553 | -- conversion |
| 548 | a = 0; for i="10","1","-2" do a=a+1 end; assert(a==5) | 554 | a = 0; for i="10","1","-2" do a=a+1 end; assert(a==5) |
| 549 | 555 | ||
