Commit Graph

2 Commits

Author SHA1 Message Date
3645a3c2d2 feat(joinir): Task 200-2 - JoinInlineBoundaryBuilder implementation for Pattern2
Builder pattern for JoinInlineBoundary construction, reduces field manipulation scattering.

# Changes
- NEW: src/mir/join_ir/lowering/inline_boundary_builder.rs (165 lines)
  - JoinInlineBoundaryBuilder with 7 fluent methods
  - Complete unit test coverage (4 tests)
- MODIFIED: src/mir/join_ir/lowering/mod.rs (+2 lines)
  - Export inline_boundary_builder module
  - Public re-export of JoinInlineBoundaryBuilder
- MODIFIED: src/mir/builder/control_flow/joinir/patterns/pattern2_with_break.rs
  - Replace direct boundary field manipulation with builder pattern
  - 9 lines of field assignments → fluent builder chain

# Benefits
- **Centralized**: All boundary construction logic in builder
- **Readable**: Fluent API shows construction intent clearly
- **Maintainable**: Changes to boundary structure isolated to builder
- **Type Safe**: Builder validates field consistency

# Tests
 All builder unit tests pass (4/4)
 All pattern module tests pass (30+)
 Library build succeeds with no errors

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-08 04:25:58 +09:00
5ba11468e4 feat(joinir): Phase 172 - Trim pattern JoinIR lowering implementation
Implement actual MIR generation for Trim pattern loops, enabling
LoopBodyLocal variables to work through bool carrier promotion.

## Implementation (pattern2_with_break.rs)
- emit_whitespace_check(): Generate OR chain for whitespace comparison
- extract_substring_args(): Extract s, start from substring call
- Initial carrier generation: ch0 = s.substring(start, start+1)
- Whitespace check: is_ch_match0 = (ch0 == " " || "\t" || "\n" || "\r")
- ConditionEnv integration: Register carrier for JoinIR condition
- Break condition replacement: !is_ch_match instead of original ch checks

## Architecture
- Host MIR: substring calls, OR chain evaluation, BoxCall
- JoinIR: Only sees bool carrier for break control
- No new JoinIR instructions added

## Documentation
- phase172-trim-lowering-impl.md: Design and implementation details
- loop_pattern_space.md: Analysis of all loop pattern combinations

Test: Trim loops compile and generate JoinIR successfully
Build: 0 errors, clean compilation

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 03:06:20 +09:00