Something went wrong. Try again.
Jam Programming Language jamlang.org
compiler
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394const { assert } = import("test");
fn pointerToLocal() u8 { var x: u8 = 99; var p: *const u8 = &x; return p.*;}
fn writeThroughPointer() u8 { var x: u8 = 0; var p: *mut u8 = &x; p.* = 77; return x;}
fn pointerToArrayElement() u8 { var arr: [4]u8 = [11, 22, 33, 44]; var p: *const u8 = &arr[2]; return p.*;}
fn writeThroughArrayElementPointer() u8 { var arr: [4]u8 = [1, 2, 3, 4]; var p: *mut u8 = &arr[1]; p.* = 99; return arr[1];}
fn loadFromPtrParam(p: *const u8) u8 { return p.*;}
fn callWithPtrArg() u8 { var x: u8 = 50; return loadFromPtrParam(&x);}
const Point = struct { x: u8, y: u8,};
fn addressOfStructField() u8 { var pt: Point = Point { x: 10, y: 20 }; var px: *mut u8 = &pt.x; px.* = 200; return pt.x;}
fn manyItemPointerIndex() u8 { var arr: [4]u8 = [5, 6, 7, 8]; var p: *mut[] u8 = &arr[1]; return p[2];}
fn manyItemPointerWrite() u8 { var arr: [4]u8 = [1, 2, 3, 4]; var p: *mut[] u8 = &arr[0]; p[3] = 88; return arr[3];}
tfn pointerToLocal() { assert(pointerToLocal(), 99);}
tfn writeThroughPointer() { assert(writeThroughPointer(), 77);}
tfn pointerToArrayElement() { assert(pointerToArrayElement(), 33);}
tfn writeThroughArrayElementPointer() { assert(writeThroughArrayElementPointer(), 99);}
tfn callWithPtrArg() { assert(callWithPtrArg(), 50);}
tfn addressOfStructField() { assert(addressOfStructField(), 200);}
tfn manyItemPointerIndex() { assert(manyItemPointerIndex(), 8);}
tfn manyItemPointerWrite() { assert(manyItemPointerWrite(), 88);}