summaryrefslogtreecommitdiff
path: root/tests/generics/test_generic_traits.zc
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-25 13:44:24 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-25 13:44:24 +0000
commit0bd7b99fbf813415b9a0217eaa2a4e8f6f74e1ea (patch)
tree1328e02c6f87580fb9542c75bfa214c389fe1ca2 /tests/generics/test_generic_traits.zc
parent7fea57bdddde04090cc95112b47d0a1a86c341bc (diff)
Fix for #111
Diffstat (limited to 'tests/generics/test_generic_traits.zc')
-rw-r--r--tests/generics/test_generic_traits.zc42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/generics/test_generic_traits.zc b/tests/generics/test_generic_traits.zc
new file mode 100644
index 0000000..8458ba0
--- /dev/null
+++ b/tests/generics/test_generic_traits.zc
@@ -0,0 +1,42 @@
+
+trait MyClone {
+ fn my_clone(self) -> int;
+}
+
+struct GBox<T> {
+ val: T;
+}
+
+impl MyClone for GBox<T> {
+ fn my_clone(self) -> int {
+ return 1;
+ }
+}
+
+test "generic_trait_method_resolution" {
+ var b = GBox<int>{ val: 10 };
+ var res = b.my_clone();
+ assert(res == 1, "Generic trait method call failed");
+}
+
+trait ValueProvider {
+ fn get_value(self) -> int;
+}
+
+struct Wrapper<T> {
+ inner: T;
+}
+
+impl ValueProvider for Wrapper<T> {
+ fn get_value(self) -> int {
+ return 42;
+ }
+}
+
+test "generic_trait_resolution_complex" {
+ var w = Wrapper<bool>{ inner: true };
+ assert(w.get_value() == 42, "Wrapper<bool> trait call failed");
+
+ var w2 = Wrapper<int>{ inner: 100 };
+ assert(w2.get_value() == 42, "Wrapper<int> trait call failed");
+}