|
|
fd83903f87
|
feat(joinir): Phase P1 If Handler boxification - 40% code reduction
## Summary
Refactored loop-internal If statement handling into a boxified module
structure, achieving 154-line reduction (40%) from stmt_handlers.rs
with zero regression.
## Implementation
- Created if_in_loop/ module (9 files, ~480 lines)
- pattern.rs: IfInLoopPattern enum (5 variants)
- lowering/{empty,single_var_then,single_var_both,conditional_effect,unsupported}.rs
- Replaced lower_if_stmt_in_loop() (154 lines) with lower_if_stmt_in_loop_boxified()
- Made StatementEffect pub(crate) for module visibility
## Pattern Classification
1. Empty: condition-only check (no side effects)
2. SingleVarThen: if { x = a } → x = cond ? a : x
3. SingleVarBoth: if { x = a } else { x = b } → x = cond ? a : b
4. ConditionalEffect: if pred(v) { acc.push(v) } (filter pattern)
5. Unsupported: complex cases (Phase 54+)
## Test Results
✅ 56 JoinIR tests PASSED (0 failed, 0 regression)
✅ Build successful (1m 02s)
✅ Improved maintainability (easier to add new patterns)
## Files Changed
- src/mir/join_ir/frontend/ast_lowerer/
- if_in_loop/ (9 new files)
- mod.rs (+2 lines: module + pub use)
- stmt_handlers.rs (-154 lines: 40% reduction)
- CURRENT_TASK.md (+5 lines: Phase P1 記録)
- docs/development/refactoring/p1-if-handler-boxification-plan.md (new)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-29 07:20:56 +09:00 |
|
|
|
e27934d91a
|
feat(joinir): Phase 52-53 LoopFrontendBinding JSON + Statement Handlers
Phase 52: LoopFrontendBinding JSON generation fixes
- Add receiver_to_json() for Field node structure (me.tokens)
- Add needs_me_receiver() for instance method detection
- Fix "condition" → "cond" key for JoinIR Frontend
- Add me parameter propagation in loop_patterns.rs
- Add JoinIR-compatible type fields in ast_json.rs
- Variable → "type": "Var"
- Literal → "type": "Int"/"Bool" (literal_to_joinir_json)
- BinaryOp → "type": "Binary"/"Compare" (is_compare_op)
- MethodCall → "type": "Method"
Phase 53: Statement Handler module for loop body
- NEW: stmt_handlers.rs with StatementEffect type
- Support: Local, Assignment, Print, Method, If statements
- If lowering: single variable update → Select instruction
- Remove hardcoded assert in loop_patterns.rs
- Replace with generic lower_statement() calls
Test results: 56 JoinIR tests PASS, 7 loop_frontend_binding tests PASS
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-29 04:42:16 +09:00 |
|