Files
hakorune/docs/archive/refactoring_completion_issue.md

6.1 KiB

🚀 Issue: Complete Refactoring Project - Fix Compilation Errors & Continue Stages 3-5

Priority: 🔥 HIGH - Critical compilation errors blocking development
Status: PR #83 partial completion requires immediate follow-up
Impact: File refactoring project stalled at 40% completion

📊 Current Situation Analysis

Completed Successfully (Stages 1-2)

# Stage 1: main.rs refactoring - MASSIVE SUCCESS
main.rs: 1,490 lines → 62 lines (24x reduction!)

# Stage 2: Box trait separation - PARTIALLY COMPLETED  
src/cli.rs:           175 lines  ✅ (CLI argument handling)
src/runner.rs:        710 lines  ✅ (Backend execution logic)
src/box_arithmetic.rs: 579 lines ✅ (Arithmetic operations extracted)
src/boxes/traits.rs:   89 lines  ✅ (Box trait definitions)
box_trait.rs.backup:         ✅ (Safe backup created)

🚨 Critical Problem: 14 Compilation Errors

error[E0599]: no method named `try_add` found for reference `&IntegerBox`
error[E0599]: no method named `try_sub` found for reference `&BoolBox`
error[E0599]: no method named `try_mul` found for reference `&StringBox`
error[E0599]: no method named `try_div` found for reference `&FloatBox`
# ... 10 more similar errors

Root Cause: Arithmetic trait implementations (DynamicAdd, DynamicSub, DynamicMul, DynamicDiv) were separated during refactoring but not properly connected.

🎯 Required Immediate Actions

Task 1: Fix Compilation Errors (CRITICAL)

The separated Box types in src/box_arithmetic.rs need proper trait implementations:

// Required trait implementations for each Box type:
// IntegerBox, StringBox, FloatBox, BoolBox need:

impl DynamicAdd for IntegerBox {
    fn try_add(&self, right: Box<dyn NyashBox>) -> Option<Box<dyn NyashBox>> {
        // Implementation needed
    }
}

impl DynamicSub for BoolBox {
    fn try_sub(&self, right: Box<dyn NyashBox>) -> Option<Box<dyn NyashBox>> {
        // Implementation needed
    }
}

// Similar implementations needed for DynamicMul, DynamicDiv

Success Criteria: cargo build --release must complete without errors.

Task 2: Complete Remaining Stages (3-5)

Continue the systematic refactoring plan from Gemini AI analysis:

Stage 3: parser/mod.rs (1,461 lines) Refactoring

// Target file structure:
src/parser/expressions.rs  // Binary operations, method calls, if expressions
src/parser/statements.rs   // let bindings, return statements, loop constructs  
src/parser/literals.rs     // Number, string, array literal parsing
src/parser/common.rs       // Whitespace/comment utilities
src/parser/mod.rs          // Coordination facade (target: <200 lines)

Stage 4: interpreter/expressions.rs (1,166 lines) Refactoring

// Target file structure:
src/interpreter/eval_operations.rs     // Binary/unary operator evaluation
src/interpreter/eval_calls.rs          // Method call resolution and execution
src/interpreter/eval_control_flow.rs   // if expression, loop evaluation
src/interpreter/expressions.rs         // Dispatcher (target: <300 lines)

Stage 5: mir/builder.rs (1,107 lines) Refactoring

// Target file structure:
src/mir/builder/expressions.rs  // AST expression → MIR instructions
src/mir/builder/statements.rs   // AST statement → MIR instructions
src/mir/builder/variables.rs    // Variable binding, scope management
src/mir/builder.rs              // MirBuilder coordination (target: <250 lines)

📋 Implementation Requirements

Quality Standards

  • No functionality changes: Pure refactoring only
  • Compile success: Each stage must build successfully
  • Test compatibility: All existing tests must pass
  • Import cleanup: Remove unused imports revealed by separation

File Size Targets

parser/mod.rs:        1,461 → <200 lines (7x reduction)
interpreter/expressions.rs: 1,166 → <300 lines (4x reduction)
mir/builder.rs:       1,107 → <250 lines (4x reduction)

Architecture Preservation

  • 🎯 Everything is Box philosophy: Maintain unified abstraction
  • 🎯 Arc model: Preserve thread-safety patterns
  • 🎯 Four backend support: Keep Interpreter/VM/WASM/AOT compatibility

🧪 Validation Process

After Compilation Fix

# Must pass immediately after Task 1
cargo build --release  ✅
cargo test             ✅
./target/release/nyash test_comprehensive_operators.hako  ✅

After Each Refactoring Stage

# Must pass after each of Stages 3-5
cargo check --all-targets
./target/release/nyash app_dice_rpg.hako
./target/release/nyash --benchmark --iterations 10

💡 Implementation Guidance

Compilation Error Fix Pattern

// Located in src/operator_traits.rs - traits are already defined
// Need to implement for each separated Box type:

use crate::operator_traits::{DynamicAdd, DynamicSub, DynamicMul, DynamicDiv};

// Add to each Box implementation in box_arithmetic.rs
impl DynamicAdd for [BoxType] {
    fn try_add(&self, right: Box<dyn NyashBox>) -> Option<Box<dyn NyashBox>> {
        // Use existing logic from backup file if needed
    }
}

Module Separation Strategy

  • Copy relevant functions from large files to new specialized files
  • Update imports in the original coordination file
  • Test incrementally - one function group at a time
  • Preserve existing logic - no behavioral changes

📝 Progress Reporting Required

For Each Completed Stage

  • Report file count changes and size reductions
  • List any architectural issues discovered
  • Document removed unused imports/dependencies
  • Measure compilation time impact

Critical Requirements

  • Report ALL compilation errors during fix process
  • Document any unexpected issues found during refactoring
  • Progressive updates - don't work in silence
  • Complete validation before marking each stage done

🎯 This completes the Gemini AI strategic refactoring plan. Current 40% completion needs to reach 100% for maximum maintainability benefits.

🚨 Task 1 (compilation fix) is blocking all development. Immediate resolution required.