Adds support for continuing to track tables across function calls #67
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
On top of #65
The basic idea:
When a function is called, there's a few things relevant to table fields that could happen:
(1) The function could be called as a method, i.e. invoked on a table, i.e. table:function(); we need to stop tracking it
(2) The table as a whole could be passed to the function; we need to stop tracking it
(3) Externally accessible fields could have arbitrary reads, writes, or aliases; we need to stop tracking them
(4) A specific field from the table could be passed; this is an access to that field
Here's some sample code to illustrate why cases 1-3 need to outright stop tracking the table in question, rather than marking all keys are potentially read/written and marking the table as being externally referenceable:
Note that this is one of two pieces of function-call related functionality; the other is handling for builtin functions: type, pairs, ipairs, next, table.insert, table.remove, table.sort, table.concat.