Files
hakorune/tests
nyash-codex b7f7882558 feat(joinir): Phase 79 Activation - BindingId wiring operational (dev-only)
Phase 79 の最終段階:BindingId を ExprLowerer に配線し、end-to-end で動作確認。

Key changes:
- ExprLowerer wiring:
  - scope_resolution.rs: build_condition_env_from_scope_with_binding() (BindingId-aware)
  - expr_lowerer.rs: lower_condition() uses BindingId priority lookup

- ConditionEnv extension:
  - register_loop_var_binding(): Loop var BindingId→ValueId registration
  - register_condition_binding(): Condition-only carrier BindingId→ValueId registration

- Pattern2 integration:
  - pattern2_with_break.rs: Loop var registration (Line 116-128)
  - pattern2_with_break.rs: Carrier role-based registration (Line 381-425)
  - Debug logging: [phase79] tags for registration, [binding_pilot/hit] for lookup success

- E2E tests (normalized_joinir_min.rs, debug-only):
  - test_phase79_digitpos_bindingid_lookup_works(): DigitPos pattern verification
  - test_phase79_trim_bindingid_lookup_works(): Trim pattern verification

Result: BindingId lookup actually works end-to-end
- Promoted carriers resolve via BindingId, not string hacks
- Debug: NYASH_JOINIR_DEBUG=1 shows [phase79] Registered loop var BindingId, [binding_pilot/hit] BindingId(1) -> ValueId(100)

Tests: 1025/1025 lib PASS
Design: dev-only feature-gated, dual-path maintained (BindingId priority + name fallback)

Phase 74-79 complete: BindingId migration fully operational
- Infrastructure (74-76): BindingId type, binding_map, 3-tier lookup, promoted_bindings map
- Implementation (77): DigitPos/Trim populate, legacy deprecate
- Refactoring (78-79 Refactoring): PromotedBindingRecorder, Detector/Recorder split
- Activation (80 Foundation + 79 Activation): CarrierBindingAssigner + ExprLowerer wiring
2025-12-13 16:48:41 +09:00
..