Commit Graph

2 Commits

Author SHA1 Message Date
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
3dc691d39f feat(joinir): Phase 50 Loop Frontend Binding layer
Phase 50 implements the Loop Frontend Binding layer that maps
actual loop variables to JoinIR Frontend's expected names (i, acc, n).

## Changes

- Add loop_frontend_binding.rs module with:
  - LoopFrontendBinding struct for variable mapping
  - for_print_tokens() and for_array_filter() factory methods
  - generate_local_declarations() for JSON v0 format
  - rename_body_variables() for out → acc renaming

- Integrate binding with cf_loop_joinir_impl:
  - Create binding based on function name
  - Inject i/acc/n Local declarations into JSON v0
  - Use correct JoinIR Frontend type names (Int/Var/Method)

## Limitations Found

JoinIR Frontend doesn't support:
- Field access (me.tokens) - blocks print_tokens
- NewBox (new ArrayBox()) - blocks array_filter

These will be addressed in Phase 51.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 20:59:54 +09:00