feat(joinir): Phase 224-D - ConditionAlias for promoted variable resolution

- Add ConditionAlias type to CarrierInfo (old_name → carrier_name)
- Record aliases in DigitPosPromoter and TrimPatternInfo
- Resolve aliases in Pattern2 ConditionEnv building
- digit_pos now correctly resolves to is_digit_pos carrier

Fixes "Variable 'digit_pos' not bound in ConditionEnv" error.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-12-10 18:45:04 +09:00
parent 8e3b55ddec
commit 4e00edcea5
8 changed files with 174 additions and 58 deletions

View File

@ -69,6 +69,13 @@
- **Root Cause**: Break condition AST が元の変数名digit_posを保持したまま lowerer に渡される
- **Next Steps**: Option Bpromoted variable trackingで lowerer に昇格済み変数を通知する仕組みを追加1-2h
- **詳細**: [PHASE_224_SUMMARY.md](docs/development/current/main/PHASE_224_SUMMARY.md)
- **Phase 224-D 完了** ✅: ConditionAlias 導入(昇格変数の条件参照解決)
- **ConditionAlias 型追加**: `CarrierInfo``condition_aliases: Vec<ConditionAlias>` フィールド追加
- **Promoter 側記録**: DigitPosPromoter / TrimPatternInfo が昇格時に alias を記録(`digit_pos``is_digit_pos`
- **Pattern2 統合**: 昇格・merge 後に join_id 割り当て、ConditionEnv に alias を追加(`digit_pos` → ValueId(104)
- **CarrierInfo 構造修正**: DigitPosPromoter が carriers list に追加する形に変更loop_var_name 置換ではなく)
- **検証**: `phase2235_p2_digit_pos_min.hako` で alias 解決成功、エラーが次段階substring initに進展
- **残課題**: substring method in body-local initPhase 193 limitation
### 2. JsonParser / Trim / selfhost への適用状況