diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-08-24 10:17:54 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-08-24 10:17:54 -0300 |
commit | 8c8a91f2ef7acccb99e3737913faad8d48b39571 (patch) | |
tree | 0807151944b7f7fd00eedfcfe94b4ee26fe25b21 /testes/coroutine.lua | |
parent | f99509581ee73c1c2dbddb3398e87c098771d31f (diff) | |
download | lua-8c8a91f2ef7acccb99e3737913faad8d48b39571.tar.gz lua-8c8a91f2ef7acccb99e3737913faad8d48b39571.tar.bz2 lua-8c8a91f2ef7acccb99e3737913faad8d48b39571.zip |
Deprecated the emulation of '__le' using '__lt'
As hinted in the manual for Lua 5.3, the emulation of the metamethod
for '__le' using '__le' has been deprecated. It is slow, complicates
the logic, and it is easy to avoid this emulation by defining a proper
'__le' function.
Moreover, often this emulation was used wrongly, with a programmer
assuming that an order is total when it is not (e.g., NaN in
floating-point numbers).
Diffstat (limited to 'testes/coroutine.lua')
-rw-r--r-- | testes/coroutine.lua | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/testes/coroutine.lua b/testes/coroutine.lua index 182c1e18..36eae44a 100644 --- a/testes/coroutine.lua +++ b/testes/coroutine.lua | |||
@@ -1,4 +1,4 @@ | |||
1 | -- $Id: testes/coroutine.lua $ | 1 | -- $Id: testes/coroutine.lua 2018-07-25 15:31:04 -0300 $ |
2 | -- See Copyright Notice in file all.lua | 2 | -- See Copyright Notice in file all.lua |
3 | 3 | ||
4 | print "testing coroutines" | 4 | print "testing coroutines" |
@@ -619,10 +619,8 @@ end | |||
619 | 619 | ||
620 | assert(run(function () if (a>=b) then return '>=' else return '<' end end, | 620 | assert(run(function () if (a>=b) then return '>=' else return '<' end end, |
621 | {"le", "sub"}) == "<") | 621 | {"le", "sub"}) == "<") |
622 | -- '<=' using '<' | ||
623 | mt.__le = nil | ||
624 | assert(run(function () if (a<=b) then return '<=' else return '>' end end, | 622 | assert(run(function () if (a<=b) then return '<=' else return '>' end end, |
625 | {"lt"}) == "<=") | 623 | {"le", "sub"}) == "<=") |
626 | assert(run(function () if (a==b) then return '==' else return '~=' end end, | 624 | assert(run(function () if (a==b) then return '==' else return '~=' end end, |
627 | {"eq"}) == "~=") | 625 | {"eq"}) == "~=") |
628 | 626 | ||
@@ -677,7 +675,7 @@ do -- a few more tests for comparsion operators | |||
677 | return val(a) < val(b) | 675 | return val(a) < val(b) |
678 | end, | 676 | end, |
679 | } | 677 | } |
680 | local mt2 = { __lt = mt1.__lt } -- no __le | 678 | local mt2 = { __lt = mt1.__lt, __le = mt1.__le } |
681 | 679 | ||
682 | local function run (f) | 680 | local function run (f) |
683 | local co = coroutine.wrap(f) | 681 | local co = coroutine.wrap(f) |