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.
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
inference: fix bad effects for recursion #51092
inference: fix bad effects for recursion #51092
Changes from all commits
8307dbf
00c6ea7
15f7db8
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I came up with this fix for
typejoin
accuracy for externalAbstractInterpreter
with overlay table:But I just realized this isn't correct, because we can't guarantee that any overlay methods aren't involved within a recursive call graph..
And now I think this may be more problematic that I thought, because now we basically make external
AbstractInterpreter
with overlay table unable to perform concrete eval on any recursive methods.I think there are two options:
:nonoverlayed
effect bit (and rename it to:native_executable
) #51080 and annotate:nonoverlayed typejoin
, which seems awkward honestly, because it is obvious thattypejoin
is not overlayedThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typejoin
is probably considered to be:total
, which would possibly already work. The only reason this method is a problem is that it is annotated:terminates
, since otherwise inference couldn't derive that information itself anyways.