Implement arbitrary casts in custom mir
The Issue & Context
Previously, custom MIR supported multiple distinct casting methods with inconsistent behaviors and unclear error messages, making it difficult to produce desired MIR for testing and development.
Root Cause Analysis
The existing casting implementations were fragmented across several functions and implicit coercions, each handling only specific cast kinds, leading to confusion and limited flexibility when writing or testing MIR.
Solution Strategy & Architectural Pattern
Introduced a new enum in the compiler's intrinsics::mir module that mirrors the compiler's CastKind enum, enabling a single custom MIR operation to specify arbitrary casts explicitly and consistently.
Key Takeaway for Contributors
Unifying cast operations in custom MIR simplifies testing and development by providing clear, flexible casting semantics and better error reporting for compiler internals.