[compiler] Simplify ref mutation validation to single forward pass
Rewrites ValidateNoRefAccessInRender to use a simpler single-pass algorithm that only validates ref mutations (reads are now handled separately by ValidateNoImpureValuesInRender). The new approach: - Tracks refs and ref values through the function - Identifies functions that mutate refs (directly or transitively) - Only errors when ref-mutating functions are called at the top level - Supports null-guard exception: mutations inside `if (ref.current == null)` are allowed for the initialization pattern This reduces ~700 lines of complex fixpoint iteration to ~400 lines of straightforward forward data-flow analysis.
J
Joe Savona committed
cb021861a5ba9ae9d235b9e73114b7bbd2872d7c
Parent: 7505808