# 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