Fix #595: Prevent TypedDict kwargs from overlapping with named parameters #665
+1,002
−956
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.
Closes #595
This PR addresses issue #595 by adding a check in
function.rs
to preventTypedDict
keys in**kwargs
(both directTypedDict
andUnpack[TypedDict]
) from overlapping with named parameters, raising aBadFunctionDefinition
error. The change is tested intyped_dict.rs
withtest_typed_dict_kwargs_overlap
, covering directTypedDict
,Unpack[TypedDict]
, and a non-overlapping case. All tests pass, andtest.py
snapshots are included.Changes:
function.rs
forType::TypedDict
andType::Unpack
withTypedDict
inner type.typed_dict.rs
withtest_typed_dict_kwargs_overlap
to verify both cases and a negative test.cargo test
andpyrefly check test.py
.@yangdanny97, please review and let me know if additional cases or changes are needed, especially for
Unpack
handling. Thanks!