feat(joinir): Phase 227 - CarrierRole separation (LoopState vs ConditionOnly)
- Add CarrierRole enum to distinguish state carriers from condition-only carriers - ConditionOnly carriers (is_digit_pos) skip exit PHI but keep header PHI - Update all test struct literals with role field - 877/884 tests PASS (7 pre-existing failures unrelated) Remaining: ValueId(0) undefined - header PHI initialization for ConditionOnly 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -183,11 +183,12 @@ impl DigitPosPromoter {
|
||||
// For DigitPos pattern, we add a NEW carrier (not replace loop_var)
|
||||
let carrier_name = format!("is_{}", var_in_cond);
|
||||
|
||||
use crate::mir::join_ir::lowering::carrier_info::CarrierVar;
|
||||
use crate::mir::join_ir::lowering::carrier_info::{CarrierVar, CarrierRole};
|
||||
let promoted_carrier = CarrierVar {
|
||||
name: carrier_name.clone(),
|
||||
host_id: ValueId(0), // Placeholder (will be remapped)
|
||||
join_id: None, // Will be allocated later
|
||||
role: CarrierRole::ConditionOnly, // Phase 227: DigitPos is condition-only
|
||||
};
|
||||
|
||||
// Create CarrierInfo with a dummy loop_var_name (will be ignored during merge)
|
||||
|
||||
Reference in New Issue
Block a user