aboutsummaryrefslogtreecommitdiff
path: root/testes
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2019-08-21 12:19:47 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2019-08-21 12:19:47 -0300
commit3df5624ff432b340fe122988fe6d025ad3217946 (patch)
tree2abdd6d7de1245a2dcaf887c9ca28d3f259e7a49 /testes
parentbe78aeae4c429d7d68af3a3e1b0cf8e52fcff160 (diff)
downloadlua-3df5624ff432b340fe122988fe6d025ad3217946.tar.gz
lua-3df5624ff432b340fe122988fe6d025ad3217946.tar.bz2
lua-3df5624ff432b340fe122988fe6d025ad3217946.zip
Fixed bug when yiedling inside OP_ADDK opcode
The family of opcodes OP_ADDK (arithmetic operators with K constant) were not being handled in 'luaV_finishOp', which completes their task after an yield.
Diffstat (limited to 'testes')
-rw-r--r--testes/coroutine.lua11
1 files changed, 11 insertions, 0 deletions
diff --git a/testes/coroutine.lua b/testes/coroutine.lua
index 79bbf2ea..26ed1f6a 100644
--- a/testes/coroutine.lua
+++ b/testes/coroutine.lua
@@ -724,6 +724,17 @@ assert(run(function () return a / b end, {"div"}) == 10/12)
724assert(run(function () return a % b end, {"mod"}) == 10) 724assert(run(function () return a % b end, {"mod"}) == 10)
725assert(run(function () return a // b end, {"idiv"}) == 0) 725assert(run(function () return a // b end, {"idiv"}) == 0)
726 726
727-- repeat tests with larger constants (to use 'K' opcodes)
728local a1000 = new(1000)
729
730assert(run(function () return a1000 + 1000 end, {"add"}) == 2000)
731assert(run(function () return a1000 - 25000 end, {"sub"}) == -24000)
732assert(run(function () return 2000 * a end, {"mul"}) == 20000)
733assert(run(function () return a1000 / 1000 end, {"div"}) == 1)
734assert(run(function () return a1000 % 600 end, {"mod"}) == 400)
735assert(run(function () return a1000 // 500 end, {"idiv"}) == 2)
736
737
727 738
728assert(run(function () return a % b end, {"mod"}) == 10) 739assert(run(function () return a % b end, {"mod"}) == 10)
729 740