diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2019-08-15 13:44:36 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2019-08-15 13:44:36 -0300 |
| commit | a1d8eb27431c02c4529be1efd92143ad65434f3a (patch) | |
| tree | 58db9340ba2b8ea1cb91004b96f15a955f167c58 /testes/gc.lua | |
| parent | f64a1b175a5fa65434a073e6d071b32bb7b0ab69 (diff) | |
| download | lua-a1d8eb27431c02c4529be1efd92143ad65434f3a.tar.gz lua-a1d8eb27431c02c4529be1efd92143ad65434f3a.tar.bz2 lua-a1d8eb27431c02c4529be1efd92143ad65434f3a.zip | |
Added control messages to warnings
Added the concept of control messages to the warning system, plus the
implementation of the controls "@on"/"@off" to turn warnings on/off.
Moreover, the warning system in the test library adds some other
controls to ease the test of warnings.
Diffstat (limited to 'testes/gc.lua')
| -rw-r--r-- | testes/gc.lua | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/testes/gc.lua b/testes/gc.lua index 9ea054c1..6bdc98ca 100644 --- a/testes/gc.lua +++ b/testes/gc.lua | |||
| @@ -369,6 +369,7 @@ if T then | |||
| 369 | s[n] = i | 369 | s[n] = i |
| 370 | end | 370 | end |
| 371 | 371 | ||
| 372 | warn("@store") | ||
| 372 | collectgarbage() | 373 | collectgarbage() |
| 373 | assert(string.find(_WARN, "error in __gc metamethod")) | 374 | assert(string.find(_WARN, "error in __gc metamethod")) |
| 374 | assert(string.match(_WARN, "@(.-)@") == "expected") | 375 | assert(string.match(_WARN, "@(.-)@") == "expected") |
| @@ -383,6 +384,7 @@ if T then | |||
| 383 | for i = 1, 10 do assert(s[i]) end | 384 | for i = 1, 10 do assert(s[i]) end |
| 384 | 385 | ||
| 385 | getmetatable(u).__gc = nil | 386 | getmetatable(u).__gc = nil |
| 387 | warn("@normal") | ||
| 386 | 388 | ||
| 387 | end | 389 | end |
| 388 | print '+' | 390 | print '+' |
| @@ -475,9 +477,11 @@ end | |||
| 475 | 477 | ||
| 476 | -- errors during collection | 478 | -- errors during collection |
| 477 | if T then | 479 | if T then |
| 480 | warn("@store") | ||
| 478 | u = setmetatable({}, {__gc = function () error "@expected error" end}) | 481 | u = setmetatable({}, {__gc = function () error "@expected error" end}) |
| 479 | u = nil | 482 | u = nil |
| 480 | collectgarbage() | 483 | collectgarbage() |
| 484 | warn("@normal") | ||
| 481 | end | 485 | end |
| 482 | 486 | ||
| 483 | 487 | ||
| @@ -645,7 +649,7 @@ end | |||
| 645 | 649 | ||
| 646 | -- create several objects to raise errors when collected while closing state | 650 | -- create several objects to raise errors when collected while closing state |
| 647 | if T then | 651 | if T then |
| 648 | local error, assert, find = error, assert, string.find | 652 | local error, assert, find, warn = error, assert, string.find, warn |
| 649 | local n = 0 | 653 | local n = 0 |
| 650 | local lastmsg | 654 | local lastmsg |
| 651 | local mt = {__gc = function (o) | 655 | local mt = {__gc = function (o) |
| @@ -659,7 +663,9 @@ if T then | |||
| 659 | else | 663 | else |
| 660 | assert(lastmsg == _WARN) -- subsequent error messages are equal | 664 | assert(lastmsg == _WARN) -- subsequent error messages are equal |
| 661 | end | 665 | end |
| 666 | warn("@store") | ||
| 662 | error"@expected warning" | 667 | error"@expected warning" |
| 668 | warn("@normal") | ||
| 663 | end} | 669 | end} |
| 664 | for i = 10, 1, -1 do | 670 | for i = 10, 1, -1 do |
| 665 | -- create object and preserve it until the end | 671 | -- create object and preserve it until the end |
