From ffc52a0ecb61d0f7488f91d9b124344e50f7855f Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 17 Aug 2022 11:11:22 +0200 Subject: ack check --- src/type.cff | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/type.cff') diff --git a/src/type.cff b/src/type.cff index a4a4e3d..b18c5c4 100644 --- a/src/type.cff +++ b/src/type.cff @@ -29,7 +29,16 @@ struct TypeTraits { case Slice child; h = fnv1a_i(h, child.id); + case Fn f; + h = fnv1a_i(h, f.ret.id); + foreach(p, _, f.params, + h = fnv1a_i(h, p.id); + ) + + case Agg agg; + h = fnv1a_i(h, agg.id); } + return h; } @@ -40,15 +49,20 @@ struct TypeTraits { } switch a.u { case Void; case Bool; case Flo; + case Int i; return i.sgn == b.u.Int.sgn; + case Ptr child; return child == b.u.Ptr; + case Arr arr; let brr = b.u.Arr; return arr.length == brr.length and arr.child == brr.child; + case Slice child; return child == b.u.Slice; + case Fn f0; let f1 = b.u.Fn; if f0.variadic != f1.variadic { @@ -66,6 +80,10 @@ struct TypeTraits { } ) return #t; + + case Agg agg; + let bgg = b.u.Agg; + return agg.id == bgg.id; } return #f; } -- cgit v1.2.3