added test case for struct member pointer
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 30 Nov 2021 19:04:50 +0000 (13:04 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 30 Nov 2021 19:04:50 +0000 (13:04 -0600)
tests/struct_use_pointer_member [new file with mode: 0644]
tests/struct_use_pointer_member.onyx [new file with mode: 0644]

diff --git a/tests/struct_use_pointer_member b/tests/struct_use_pointer_member
new file mode 100644 (file)
index 0000000..ac82b42
--- /dev/null
@@ -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 (file)
index 0000000..bf09163
--- /dev/null
@@ -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