Merge pull request #386 from asarhaddon/test-let-recursive-def
[jackhill/mal.git] / ada.2 / types-macros.adb
1 pragma Warnings (Off, "unit ""Types.Sequences"" is not referenced");
2 with Types.Sequences;
3 pragma Warnings (On, "unit ""Types.Sequences"" is not referenced");
4
5 package body Types.Macros is
6
7 function Ast (Item : in Instance) return T
8 is (Item.F_Ast);
9
10 procedure Keep_References (Object : in out Instance) is
11 begin
12 Keep (Object.F_Ast);
13 Object.F_Params.all.Keep;
14 end Keep_References;
15
16 function New_Macro (Func : in Fns.Instance) return T is
17 -- Params is not null and requires an immediate initialization.
18 Ref : constant Macro_Ptr := new Instance'
19 (Garbage_Collected.Instance with Func.Ast, Func.Params);
20 begin
21 Garbage_Collected.Register (Garbage_Collected.Pointer (Ref));
22 return (Kind_Macro, Ref);
23 end New_Macro;
24
25 function Params (Item : in Instance) return Sequence_Ptr
26 is (Item.F_Params);
27
28 end Types.Macros;