Implement wildcard match pattern#5576
Merged
StachuDotNet merged 1 commit intodarklang:mainfrom Apr 1, 2026
Merged
Conversation
Add LPWildcard case to LetPattern types across the codebase. The wildcard pattern `_` now properly matches any value without binding it to a variable, distinguishing it from a regular variable named "_". Changes: - Added LPWildcard to LetPattern in all type definitions (ProgramTypes, RuntimeTypes, WrittenTypes, and Darklang language tools) - Updated parser to recognize `_` as LPWildcard instead of LPVariable - Updated type converters to handle LPWildcard conversion - Updated interpreter to match wildcards without extracting bindings - Added binary serialization support for LPWildcard - Updated pretty printers and semantic tokens for wildcard display - Added comprehensive tests for wildcard patterns in tuples and let bindings - Fixed symbol threading in ProgramTypesToRuntimeTypes to preserve symbols from previous patterns when processing wildcards Closes darklang#5460
dc71a25 to
8560b55
Compare
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.
_in let patterns now properly discards values instead of binding them as a variable, matching standard ML-family semantics. This enables correct scoping, clearer error messages, and lays groundwork for future exhaustiveness checking.Add LPWildcard case to LetPattern types across the codebase. The wildcard pattern
_now properly matches any value without binding it to a variable, distinguishing it from a regular variable named "_".Changes:
_as LPWildcard instead of LPVariablefrom previous patterns when processing wildcards