From 7071734600548951d6ab6541bd566548835660ce Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 30 Nov 2021 13:04:50 -0600 Subject: [PATCH] added test case for struct member pointer --- tests/struct_use_pointer_member | 2 ++ tests/struct_use_pointer_member.onyx | 32 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 tests/struct_use_pointer_member create mode 100644 tests/struct_use_pointer_member.onyx 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 -- 2.25.1