Am 02.01.2013 21:00, schrieb Thijs Schreijer:
AFAIK there is no function (in the standard library) returning more than three values in the error case, so `assert( ok, msg, _, lvl )` probably would work. But I believe the current protocol is: nil, error_msg, + whatever_is_useful, so it will likely break for some third party code. You could always add separate functions for different stack levels (assert, assert1, assert2, assert3, ...). My favorite would be a func-table with a memoizing __index: assert( bla() ), assert[2]( blub() ) ), etc., but this will probably break some unit testing frameworks (if they replace assert themselves).Another caveat is that some functions in os and many functions in io return nil,msg,errno in case of error, and this would mess with the level argument ...That is indeed a nasty one. But still very annoying that there is no level on an assert call. Any ideas on how to add such a thing without breaking anything?
Thijs
Philipp