[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Assignment statement does not evaluate all its expressions first
- From: Xmilia Hermit <xmilia.hermit@...>
- Date: Sat, 11 Sep 2021 13:10:37 +0200
As stated in the manual at
https://www.lua.org/manual/5.4/manual.html#3.3.3 the assignment
statement should first evaluate all its expressions and only then the
assignments should be performed.
However, this seems to not always be the case.
The following code shows the problem:
local up = {}
setmetatable(up, {__newindex=function()
up = ""
end})
local function test()
up.x, up.y = 1, 1
end
test()
This failes with: attempt to index a string value (upvalue 'up').
However, I would expect from the manual that
a=up, b=up, c=1, d=1 are evaluated (in any order) as they are
expressions and then the assignments
a.x = c, b.y = d are assigned in any order which would not result in the
error observed.
Am I missing something from the manual or is this a bug?
Regards,
Xmilia