feat(joinir): Phase 188 JoinInlineBoundary + Pattern 1 working! 🎉
Major milestone: loop_min_while.hako outputs "0 1 2" correctly! ## JoinInlineBoundary (Option D from ChatGPT Pro design review) - New struct for clean SSA boundary between JoinIR and host function - JoinIR uses local ValueIds (0,1,2...) - no host ValueId dependency - Copy injection at entry block connects host → JoinIR values ## Pattern 1 Simple While Loop - Refactored to use pure local ValueIds - Removed Pattern1Context dependency on host ValueIds - Clean separation: lowerer generates, merger connects ## Key Design Principles (Box Theory) - Box A: JoinIR Frontend (host-agnostic) - Box B: Join→MIR Bridge (independent functions) - Box C: JoinInlineBoundary (boundary info only) - Box D: JoinMirInlineMerger (Copy injection) ## Files Changed - NEW: inline_boundary.rs - JoinInlineBoundary struct - control_flow.rs - merge with boundary, void return fix - simple_while_minimal.rs - pure local ValueIds - mod.rs - module export Test: NYASH_DISABLE_PLUGINS=1 ./target/release/hakorune apps/tests/loop_min_while.hako Output: 0\n1\n2 ✅ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -27,6 +27,7 @@ pub mod if_merge; // Phase 33-7
|
||||
pub mod if_phi_context; // Phase 61-1
|
||||
pub mod if_phi_spec; // Phase 61-2
|
||||
pub mod if_select; // Phase 33
|
||||
pub mod inline_boundary; // Phase 188-Impl-3: JoinIR→Host boundary
|
||||
pub mod loop_form_intake;
|
||||
pub mod loop_patterns; // Phase 188: Pattern-based loop lowering (3 patterns)
|
||||
pub mod loop_scope_shape;
|
||||
|
||||
Reference in New Issue
Block a user