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
// Test: Patterns in Function Parameters
// Tests that destructuring patterns work in function parameters

// ============================================================================
// TEST 1: Tuple parameter destructuring
// ============================================================================

fn add_tuple((a, b): (i32, i32)) -> i32 {
    return a + b
}

fn add_triple((a, b, c): (i32, i32, i32)) -> i32 {
    return a + b + c
}

// ============================================================================
// TEST 2: Struct parameter destructuring
// ============================================================================

struct Point {
    x: i32,
    y: i32,
}

fn distance_from_origin(Point { x, y }: Point) -> f32 {
    let sum = (x * x + y * y) as f32
    return sum
}

// ============================================================================
// TEST 3: Enum parameter destructuring
// ============================================================================

enum Option<T> {
    Some(T),
    None,
}

fn unwrap_or_zero(Option::Some(value): Option<i32>) -> i32 {
    return value
}

// ============================================================================
// TEST 4: Wildcard in parameters
// ============================================================================

fn ignore_second((a, _): (i32, i32)) -> i32 {
    return a
}

fn ignore_all(_: i32) -> i32 {
    return 42
}

// ============================================================================
// TEST 5: Nested patterns in parameters
// ============================================================================

fn nested_tuple(((a, b), (c, d)): ((i32, i32), (i32, i32))) -> i32 {
    return a + b + c + d
}

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

fn main() {
    let r1 = add_tuple((5, 10))
    let r2 = add_triple((1, 2, 3))
    
    let point = Point { x: 3, y: 4 }
    let r3 = distance_from_origin(point)
    
    let r4 = ignore_second((100, 200))
    let r5 = ignore_all(999)
    
    let r6 = nested_tuple(((1, 2), (3, 4)))
    
    println("All function parameter pattern tests passed!")
}