[draft] Allow templated first class callables #7910
Closed
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.
WIP
This PR aims to fix the first class callable issue in #7244.
The idea is to set a new 'forwarding_to' prop on a
TClosure
.This prop will be used during analyzing to do a
VirtualFunctionCall
to the forwarded function, with the arguments provided to the first class callable function.So in this case:
Template on
$firstClass
will be inferred like this during a function call:Closure(T): T
withforward_to: debug
and args['x']
VirtualFunctionCall
todebug('x')
'x'
as the result type of the function callfirstClass('x')
Feel free to point me in the right direction, because I am just trying out some things :)
Todo:
pipe
combinator