Something went wrong. Try again.
Jam Programming Language jamlang.org
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100// Struct declarationsconst Vec3 = struct { x: f32, y: f32, z: f32 };const Pixel = struct { r: u8, g: u8, b: u8 };const Player = struct { hp: u32, level: u8, alive: bool };const Inner = struct { a: u8, b: u8 };const Outer = struct { inner: Inner, c: u8 };
tfn vec3_with_float_fields_compiles_and_runs() { const v: Vec3 = Vec3 { x: 0, y: 100, z: 50, };}
tfn pixel_field_access_returns_correct_values() { const px: Pixel = Pixel { r: 10, g: 20, b: 30 }; assert(px.r, 10); assert(px.g, 20); assert(px.b, 30);}
tfn pixel_fields_compose_in_arithmetic() { const px: Pixel = Pixel { r: 5, g: 10, b: 15 }; assert(px.r + px.g, 15); assert(px.r + px.b, 20);}
tfn multiple_pixel_instances_are_independent() { const a: Pixel = Pixel { r: 1, g: 2, b: 3 }; const b: Pixel = Pixel { r: 100, g: 200, b: 250 }; assert(a.r, 1); assert(b.r, 100); assert(a.g, 2); assert(b.g, 200);}
tfn player_holds_mixed_field_types() { const p: Player = Player { hp: 1000000, level: 42, alive: true }; assert(p.hp, 1000000); assert(p.level, 42);}
tfn nested_struct_literal_works() { const x: Outer = Outer { inner: Inner { a: 1, b: 2 }, c: 3, }; assert(x.inner.a, 1); assert(x.inner.b, 2); assert(x.c, 3);}
tfn field_assignment_modifies_struct() { var px: Pixel = Pixel { r: 0, g: 0, b: 0 }; px.r = 100; px.g = 200; px.b = 50; assert(px.r, 100); assert(px.g, 200); assert(px.b, 50);}
tfn nested_field_assignment_modifies_struct() { var x: Outer = Outer { inner: Inner { a: 0, b: 0 }, c: 0 }; x.inner.a = 7; x.inner.b = 8; x.c = 9; assert(x.inner.a, 7); assert(x.inner.b, 8); assert(x.c, 9);}
tfn variable_assignment_modifies_value() { var x: u8 = 10; x = 50; assert(x, 50);}
fn make_pixel(r_val: u8, g_val: u8, b_val: u8) Pixel { const p: Pixel = Pixel { r: r_val, g: g_val, b: b_val }; return p;}
tfn function_can_return_struct() { const p: Pixel = make_pixel(10, 20, 30); assert(p.r, 10); assert(p.g, 20); assert(p.b, 30);}
fn pixel_red_channel(p: Pixel) u8 { return p.r;}
tfn struct_param_field_access_works() { const px: Pixel = Pixel { r: 77, g: 0, b: 0 }; assert(pixel_red_channel(px), 77);}