Mago 1.49.0 improves generic and assertion analysis, keeps array types precise, fixes scoped ignores, and sharpens formatter output.
🐛 Bug Fixes
Analyzer
- By-reference mutations: preserves nested literal booleans in arrays changed by built-in functions. (#2374, c5186aa)
- Equality narrowing: keeps strict literal strings when compared with wider string types. (#2365, fe9439d)
- Dynamic instantiation: preserves nested template bounds for inferred
class-string<T>. (#2379, 0c6c397) - Parent method templates: resolves inherited generic returns inside templated children. (#2378, 4eada77)
- Method assertions: retains pure-method assertions across guards, loops, matches, switches, and boolean aliases. (#2377, 8cdf201)
Codex
- Array unions: accepts generic arrays compatible with a union of equivalent keyed-array types. (#2367, 8766002)
Configuration
- Scoped pattern ignores: keeps
patternwhen an analyzer ignore also setscodeandin. (#2375, ea0c26f)
Formatter
- Broken chains: indents continuations when the formatter wraps operator chains. (#2368, #2370, 497cbb8)
- Null coalescing: wraps long
??chains within the configured print width. (#2380, 596ce7f) - Statement terminators: keeps semicolons with wrapped
useandechostatements. (#2363, ec5c55c)
CLI
🙏 Thank You
Contributors
A huge thank you to everyone who contributed code to this release:
Issue Reporters
Thank you to everyone who reported issues that shaped this release:
- @MichaelOwenDyer: #2374, #2375, #2377, #2378
- @frusznyak: #2368
- @benjamingwynn: #2365
- @BafS: #2367
- @bendavies: #2379
- @Bleksak: #2380
Full Changelog: 1.48.1...1.49.0