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.
Includes #152
Implements a hook environment as an object table. Requires some trickery to instantiate an environment and set the hashtable to the object table. This environment signals a typed condition when it gets requests for an object.
Instruments tidyeval overscopes with the hook environment so we get conditions for lookup failures. The hook environment is installed at the end of the lexical scope.
Not as successful as I'd hoped:
As we discussed grabbing a function is not a distinct operation on object tables, so we can't signal different conditions for symbol lookup and function lookup.
R often does not call the
exists()
method but usesget()
and checks forR_UnboundValue
. In particular it does this when looking up for S3 methods. This means we signal a lot of false positive conditions :(