-
Notifications
You must be signed in to change notification settings - Fork 5
Parser notes
Lua functions return multiple values. The caller has to decide how many values to accept.
-
If the function call is the last expression in a function argument list, or in a return statement, or in a table constructor then we have to allow unlimited values.
-
If the function call is in an assignment statement (including local declaration) and is the last expression, then the number of return values to accept is equal to corresponding variable plus any excess variables.
-
In all other cases the function return values are truncated to 1 result.
-
If a function call is surrounded by parens then it truncates result to 1 value.
Normally up-values reference local variables in an enclosing function. However _ENV
is a special case as it doesn't exist as a local variable in any scope and yet we need to create an up-value for it when globals are accessed. We also need to allow for the user defining a local _ENV
in some scope, which would then override the default _ENV
.
The special case handling of _ENV
was addressed in issue #35.