pointers pointers pointers
This commit is contained in:
parent
b959e11e51
commit
fe622654e5
9 changed files with 131 additions and 6 deletions
41
tests/comprehensive_pointers.sui
Normal file
41
tests/comprehensive_pointers.sui
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
# 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
|
||||
6
tests/pointers.sui
Normal file
6
tests/pointers.sui
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Pointer type test
|
||||
fn main() -> int do
|
||||
let x: *int = 0 as *int; # Cast to pointer for now
|
||||
let y = x; # Should infer *int
|
||||
42
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue