Mago 1.47.3
Mago 1.47.3 improves pipe expressions, numeric inference, match narrowing, readonly offsets, nullsafe chains, and loop control.
✨ Features
Analyzer
Formatter
- Pipe formatting: adds
preserve-breaking-pipe-expressionto retain existing line breaks. (#2141, 0cfc8ec)
🐛 Bug Fixes
Analyzer
- Nullsafe chains: narrows receivers after a nullsafe chain is proven non-null. (#2226, 4e678b8)
- Readonly offsets: allows offset writes through readonly properties holding
ArrayAccessobjects. (#2227, af3c576) - Pipe expressions: preserves generic return types through pipe partial applications. (#2141, 0cfc8ec)
- Numeric-string unary ops: models signs, increments, and decrements as PHP does. (#2229, 9316487)
- Boolean match arms: narrows the original subject for
instanceofconditions. (#2231, d6cdf19) - Switch loop levels: resolves numeric
breakandcontinuelevels acrossswitch. (#2233, c5eff01)
🏗️ Internal
Performance
- Match allocations: avoids allocating synthetic variable names during match analysis. (4c2581f)
🙏 Thank You
Contributors
No external pull requests were merged for this release.
Issue Reporters
Thank you to everyone who reported issues that shaped this release:
- @giorgiopogliani: #2141
- @MichaelOwenDyer: #2226, #2231
- @Elhebert: #2227
- @BafS: #2229
- @ddanielou: #2232
- @kamil-tekiela: #2233
Full Changelog: 1.47.2...1.47.3