lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]




On 30/12/15 02:17 PM, Roberto Ierusalimschy wrote:
On Fri, Dec 25, 2015 at 12:00 AM, Jonathan Goble <jcgoble3@gmail.com> wrote:

On Thu, Dec 24, 2015 at 3:54 PM, Egor Skriptunoff
<egor.skriptunoff@gmail.com> wrote:
On Thu, Dec 24, 2015 at 12:29 PM, Jonathan Goble <jcgoble3@gmail.com>
wrote:
This metatable chaining could theoretically continue indefinitely.
The nested metatable limit is 2000 levels for Lua 5.3 (and 100 for
LuaJIT).

Hence "theoretically". :)

I figured there were recursion limits, as in practice stack overflow
become a concern.

It seems that nesting of "__index" metamethods results in tail calls.
The nesting of "__index" metamethods is done in a C loop, with no
calls at all. The limit is there only to avoid infinite loops (with
a table inheriting from itself).

-- Roberto

I think they meant metamethods as in

mt.__index = function(t, k) return t.t2[k] end

--
Disclaimer: these emails may be made public at any given time, with or without reason. If you don't agree with this, DO NOT REPLY.