From: Brendan Hansen Date: Tue, 30 Nov 2021 19:04:50 +0000 (-0600) Subject: added test case for struct member pointer X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=7071734600548951d6ab6541bd566548835660ce;p=onyx.git added test case for struct member pointer --- diff --git a/tests/struct_use_pointer_member b/tests/struct_use_pointer_member new file mode 100644 index 00000000..ac82b42b --- /dev/null +++ b/tests/struct_use_pointer_member @@ -0,0 +1,2 @@ +Hello, I am Billy! +Go away!! func[3] diff --git a/tests/struct_use_pointer_member.onyx b/tests/struct_use_pointer_member.onyx new file mode 100644 index 00000000..bf091635 --- /dev/null +++ b/tests/struct_use_pointer_member.onyx @@ -0,0 +1,32 @@ +#load "core/std" +use package core + +Person_Vtable :: struct { + greet: (^Person) -> void; +} + +Person :: struct { + use vtable: ^Person_Vtable; + + name: str; +} + +nice_person := Person_Vtable.{ + greet = (use p: ^Person) { + printf("Hello, I am {}!\n", name); + } +} + +mean_person := Person_Vtable.{ + greet = (use p: ^Person) { + printf("Go away!! {}\n", greet); + } +} + +main :: (args) => { + billy := Person.{ ^nice_person, "Billy" }; + charles := Person.{ ^mean_person, "Charles" }; + + billy->greet(); + charles->greet(); +} \ No newline at end of file