suicmez/tests/comprehensive_pointers.sui
2025-12-15 18:20:53 +05:30

41 lines
761 B
Text

# Pointer in struct
struct Point
x: *int,
y: int,
end
# Pointer in function parameter
fn take_ptr(ptr: *int) -> int do
0 # dummy
end
# Pointer in return type
fn return_ptr(x: int) -> *int do
x as *int
end
fn main() -> int do
# Basic pointer
let x: *int = 0 as *int;
let y = x; # Should infer *int
# Reference and dereference
let val = 42;
let ptr = &val; # Should be *int
let deref_val = *ptr; # Should be int
let ptr_to_ptr: *(*int) = &ptr; # **int
let p = Point { x: ptr, y: 42 };
take_ptr(ptr);
let z = return_ptr(deref_val);
# Nested operations
let nested_ptr = &ptr; # **int
let deref_once = *nested_ptr; # *int
let deref_twice = *deref_once; # int
42
end