Repository navigation
feat: structural match patterns - #63
Merged
Merged
Conversation
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
Last point of the consolidation: sequence, mapping and class patterns in
match.test: define sequence, mapping and class patterns), implementation follows.SequencePatternwithStarPattern,MappingPatternwith a**rest,ClassPatternwith keyword sub-patterns); scopes bind their captures as locals.matchout as anifchain over a hidden subject, desugars them faithfully: a sequence pattern tests the length, exactly or at least when a star is present, applies its sub-patterns to indexed items and binds the star to the middle slice; a mapping pattern tests each key's membership and applies sub-patterns to the values,**restbinding the subject; a class pattern testsisinstanceand applies keyword sub-patterns to attributes. Every sub-pattern applies to the expression so built, so patterns nest, guards see the captures and taint flows through them like through any assignment. Positional class patterns need the class's__match_args__and stay reported per function.On the sixteen repositories nothing changes. This closes the consolidation list agreed after the roadmap: closure bodies,
selfstate across methods and structural patterns are all in.