windjammer 0.48.0

A simple language inspired by Go, Ruby, and Elixir that transpiles to Rust - 80% of Rust's power with 20% of the complexity
Documentation
// Pattern Matching Audit - Test current support level

// Simple enum (unit variants only - tuple variants not yet supported)
enum Color {
    Red,
    Green,
    Blue,
}

// Generic enum with single-field variants
enum Option<T> {
    Some(T),
    None,
}

enum Result<T, E> {
    Ok(T),
    Err(E),
}

// ============================================================================
// TEST 1: Unit enum variants
// ============================================================================

fn test_unit_variants(color: Color) -> i32 {
    match color {
        Color::Red => { return 1 }
        Color::Green => { return 2 }
        Color::Blue => { return 3 }
    }
}

// ============================================================================
// TEST 2: Enum variants with single binding
// ============================================================================

fn test_variant_bindings(opt: Option<i32>) -> i32 {
    match opt {
        Option::Some(value) => { return value }
        Option::None => { return 0 }
    }
}

// ============================================================================
// TEST 3: Nested enum patterns
// ============================================================================

fn test_nested_patterns(result: Result<i32, i32>) -> i32 {
    match result {
        Result::Ok(value) => { return value }
        Result::Err(code) => { return code }
    }
}

// ============================================================================
// TEST 4: Wildcard patterns
// ============================================================================

fn test_wildcards(value: i32) -> i32 {
    match value {
        1 => { return 100 }
        2 => { return 200 }
        _ => { return 0 }
    }
}

// ============================================================================
// TEST 5: Literal patterns (integers)
// ============================================================================

fn test_literals(value: i32) -> i32 {
    match value {
        0 => { return 0 }
        1 => { return 1 }
        42 => { return 42 }
        _ => { return -1 }
    }
}

// ============================================================================
// TEST 6: Or patterns
// ============================================================================

fn test_or_patterns(value: i32) -> i32 {
    match value {
        1 | 2 | 3 => { return 100 }
        4 | 5 => { return 200 }
        _ => { return 0 }
    }
}

// ============================================================================
// TEST 7: Wildcard in enum variant
// ============================================================================

fn test_wildcard_in_variant(opt: Option<i32>) -> i32 {
    match opt {
        Option::Some(_) => { return 1 }
        Option::None => { return 0 }
    }
}

// ============================================================================
// MAIN
// ============================================================================

fn main() {
    // Test 1: Unit variants
    let r1 = test_unit_variants(Color::Red)
    let r2 = test_unit_variants(Color::Green)
    
    // Test 2: Variant bindings
    let r3 = test_variant_bindings(Option::Some(42))
    let r4 = test_variant_bindings(Option::None)
    
    // Test 3: Result patterns
    let r5 = test_nested_patterns(Result::Ok(100))
    let r6 = test_nested_patterns(Result::Err(-1))
    
    // Test 4: Wildcards
    let r7 = test_wildcards(1)
    let r8 = test_wildcards(999)
    
    // Test 5: Literals
    let r9 = test_literals(42)
    let r10 = test_literals(100)
    
    // Test 6: Or patterns
    let r11 = test_or_patterns(2)
    let r12 = test_or_patterns(5)
    
    // Test 7: Wildcard in variant
    let r13 = test_wildcard_in_variant(Option::Some(999))
    
    println("Pattern matching audit: ALL SUPPORTED PATTERNS WORK")
}