-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Wrong Type Deduction for Values from Upvalue Tables #211
Comments
Thank you for the report |
Unfortunately the best we can do here is set ANY type as we don't have more specialized opcodes for upvalues. |
I don't see a problem with moving Lines 616 to 620 in b0a5b01
out of the if toLine 630 in b0a5b01
But I don' know your code better then you. |
Stepping in the debugger I see that e has the type of the variable upvalue points to - so you are right that we could infer that the result will be integer in this case. I will need to check this a bit as I wrote this code a while back and I need to refresh my memory. |
btw appreciate these reports very much, thank you for taking the time. |
… we can safely infer that the result of a get on array is a primitive type
… we can safely infer that the result of a get on array is a primitive type
… we can safely infer that the result of a get on array is a primitive type
… we can safely infer that the result of a get on array is a primitive type
If an integer or number array is accessed through an upvalue, the type of the result will be the same as the array, since the handling case in
luaK_dischargevars
does not setravi_type
as the other case does. The upvalue case it the following:ravi/src/lcode.c
Lines 623 to 627 in 170fd79
The following lua code will show the issue and crash with
ravi/src/lvm.c:2278: luaV_execute: Assertion `(((((rb))->tt_) == (((((5) | ((1) << 4))) | (1 << 15)))) || ((((rb))->tt_) == (((((5) | ((2) << 4))) | (1 << 15)))))' failed.
The bytecode for the inner function contains the unexpected
IARRAY_GET
, since this object is an integer and not an array.The text was updated successfully, but these errors were encountered: