lua-users home
lua-l archive

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

Coda Highland <>:

On Thu, Jan 31, 2019 at 12:28 PM Rodrigo Azevedo <> wrote:

 Anyone could tell me why the code below returns 'false', when I
 expected a 'true' instead. Tested with lua5.2, lua5.3 and

 local f1 = string.dump(function(x) x=x+1 return x end,true)
 local f2 = string.dump(function(x) x=x+1 return x end,true)
 print(f1 == f2)

 Rodrigo Azevedo Moreira da Silva

Because f2 includes f1 in its upvalues, so they have different contexts.

/s/ Adam

Huh? I thought only actually used vars were captured as upvalues. At least from performance / memory usage standpoint that would be common sense.

My guess is that debug information (at least line numbers) is different, but I didn't check it.

-- Evgeniy Zhabotinskiy