From 5c174bfc2be717db3664e9e4c916cde9dd9e6297 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 15 Nov 2021 10:05:16 -0600 Subject: [PATCH] added complicated_polymorph test --- tests/complicated_polymorph | 3 +++ tests/complicated_polymorph.onyx | 39 ++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 tests/complicated_polymorph create mode 100644 tests/complicated_polymorph.onyx diff --git a/tests/complicated_polymorph b/tests/complicated_polymorph new file mode 100644 index 00000000..0100b145 --- /dev/null +++ b/tests/complicated_polymorph @@ -0,0 +1,3 @@ +20 +23.0000 +258.0000 diff --git a/tests/complicated_polymorph.onyx b/tests/complicated_polymorph.onyx new file mode 100644 index 00000000..f3d56874 --- /dev/null +++ b/tests/complicated_polymorph.onyx @@ -0,0 +1,39 @@ +#load "core/std" + +use package core + +main :: (args: [] cstr) { + baked_proc :: (x: $T, $func: (T) -> typeof x) -> T { + return func(x); + } + + baked_proc(10, (x: i32) -> i32 { return x * 2; }) + |> println(); + + compose :: (a: $A, f: (A) -> $B, g: (B) -> $C) -> C { + return g(f(a)); + } + + Number :: interface (T: type_expr) { + T * T; + } + + dumb :: (ZZZ: $T) -> #auto where Number(T) { + return ZZZ * 2; + } + + compose(10.0f, dumb, (ABC) => ABC + 3) |> println(); + + double :: (x) => x * 2; + convert :: (x: $T, $TO: type_expr) => cast(TO) x; + add :: (x: $T, y: T) => x + y; + map :: (x: $T, f: (T) -> $R) => f(x); + + 5 |> double() + |> map((x) => x * 3) + |> add(2) + |> double() + |> map((x) => cast(f32) x) + |> map((x) => x * 4 + 2) + |> println(); +} -- 2.25.1