You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Issue to track the parts of the UCS implementation that are still incomplete or wrong – please update with more cases as you find them.
Translation
Support virtual constructors for pattern matching against tuples. Note as of Jan 2024: We implemented simple tuple pattern in New UCS desugarer and rudimentary PreTyper #194 and we will support advanced tuple patterns, for example, splice tuple patterns, in the near future.
Do not duplicate default cases and insert local function definitions instead.
Note as of Nov 2025: This has been solved in Unify patterns in UCS and UPS #336. Instead of using local functions, we use Block and Break.
Locations
Track scrutinee locations with Scrutinee.Source. (Note: it was removed in new desugarer.)
No location reported in:
fun testF(x) =if x is
Foo(a) then a
Foo(a) then a
//│ ╔══[WARNING] duplicated branch//│ ╙──
Reporting
Warn when an is test has a single pattern
Though maybe we shouldn't warn when it's conjuncted with other things, as then the is may be used to bind expressions, as in if xs is x :: xs and mapPartition(f, xs) is (as, bs) and ...
String patterns overhaul
Make a PR that overhauls string patterns; currently, they misbehave in some cases; eg
Issue to track the parts of the UCS implementation that are still incomplete or wrong – please update with more cases as you find them.
Translation
PreTyper#194 and we will support advanced tuple patterns, for example, splice tuple patterns, in the near future.PreTyper#194 and we will implement this feature in the near future.BlockandBreak.Locations
Track scrutinee locations with. (Note: it was removed in new desugarer.)Scrutinee.SourceNo location reported in:
Reporting
istest has a single patternThough maybe we shouldn't warn when it's conjuncted with other things, as then the
ismay be used to bind expressions, as inif xs is x :: xs and mapPartition(f, xs) is (as, bs) and ...String patterns overhaul
Make a PR that overhauls string patterns; currently, they misbehave in some cases; eg
Example
Fix pattern extraction semantics
Pair(0 => 1, 0 => 1)should rebuild the outer ctorsC(_, 0 => 1)should fail when the first param ofCis private, as the thing can't be rebuiltP(Transf)should warn about a discarded transformation whenPis a HOP – users should writeP(Transf as _)insteadFixed point patterns