[ty] Reduce the overwhelming complexity of TypeInferenceBuilder::infer_call_expression#18943
Merged
AlexWaygood merged 4 commits intomainfrom Jun 25, 2025
Merged
[ty] Reduce the overwhelming complexity of TypeInferenceBuilder::infer_call_expression#18943AlexWaygood merged 4 commits intomainfrom
TypeInferenceBuilder::infer_call_expression#18943AlexWaygood merged 4 commits intomainfrom
Conversation
Contributor
|
carljm
approved these changes
Jun 25, 2025
dcreager
added a commit
that referenced
this pull request
Jun 26, 2025
* main: [ty] Add regression-benchmark for attribute-assignment hang (#18957) [ty] Format conflicting types as an enumeration (#18956) [ty] Prevent union builder construction for just one declaration (#18954) [ty] Infer nonlocal types as unions of all reachable bindings (#18750) [`pyflakes`] Mark `F504`/`F522`/`F523` autofix as unsafe if there's a call with side effect (#18839) [`playground`] Add ruff logo docs link to Header.tsx (#18947) [ty] Reduce the overwhelming complexity of `TypeInferenceBuilder::infer_call_expression` (#18943) [ty] Add subdiagnostic about empty bodies in more cases (#18942) [ty] Move search path resolution to `Options::to_program_settings` (#18937) [`flake8-errmsg`] Extend `EM101` to support byte strings (#18867) Move big rule implementations (#18931) [`pylint`] Allow fix with comments and document performance implications (`PLW3301`) (#18936)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
This function is huge, and hugely indented. This PR breaks most of it out into two helper functions:
KnownFunction::check_call()andKnownClass::check_call.My immediate motivation is that we need to add yet more special cases to this function in order to properly handle
tupleinstantiations and instantiations of tuple subclasses. But I really don't relish the thought of doing that with the function's current structure 😆Test Plan
Existing tests all pass. No new ones are added; this is a pure refactor that should have no functional change.