diff options
| author | Baitinq <[email protected]> | 2025-06-11 00:16:17 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-06-11 00:16:17 +0200 |
| commit | fa92a157746ae17f295d31b7a047dfeb99624a13 (patch) | |
| tree | 71e469e67a70df15542d873ebe223654def6111b /examples/24.pry | |
| parent | stdlib: Remove println (diff) | |
| download | interpreter-fa92a157746ae17f295d31b7a047dfeb99624a13.tar.gz interpreter-fa92a157746ae17f295d31b7a047dfeb99624a13.tar.bz2 interpreter-fa92a157746ae17f295d31b7a047dfeb99624a13.zip | |
Diffstat (limited to 'examples/24.pry')
| -rw-r--r-- | examples/24.pry | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/examples/24.pry b/examples/24.pry new file mode 100644 index 0000000..f30a7fc --- /dev/null +++ b/examples/24.pry @@ -0,0 +1,48 @@ +extern malloc = (i64) => *void; + +import "!stdlib.pry"; + +let test = struct { + x: i64, + y: *i8, + z: *test, +}; + +let print_struct = (s: *test) => void { + printf("X: %d\n", (*s).x); + printf("Y: %s\n", (*s).y); + if (*s).z != cast(*test, null) { + print_struct((*s).z); + }; + return; +}; + +let main = () => i64 { + let inst = cast(*test, malloc(sizeof(test))); + let inst2 = cast(*test, malloc(sizeof(test))); + + print_struct(inst); + + (*inst).x = 4; + (*inst).y = "hi"; + (*inst).z = inst2; + + (*inst2).y = "bye"; + + print_struct(inst); + + return 0; +}; + +/* + +Expected stdout: + +X: 0 +Y: (null) +X: 4 +Y: hi + +Expected return: 0 + +*/ |