diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-25 13:44:24 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-25 13:44:24 +0000 |
| commit | 0bd7b99fbf813415b9a0217eaa2a4e8f6f74e1ea (patch) | |
| tree | 1328e02c6f87580fb9542c75bfa214c389fe1ca2 /tests/generics/test_generic_traits.zc | |
| parent | 7fea57bdddde04090cc95112b47d0a1a86c341bc (diff) | |
Fix for #111
Diffstat (limited to 'tests/generics/test_generic_traits.zc')
| -rw-r--r-- | tests/generics/test_generic_traits.zc | 42 |
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"); +} |
