@@ -38,85 +38,3 @@ type AST zero ASTEOF implies MustRetain, MustRelease
3838 | Typedef { td: OneOwnedData<ASTTypedef>[] };
3939
4040let $"App"(left: OneOwnedData<AST>[], right: OneOwnedData<AST>[]): AST = App ( false, left, right );
41-
42- let .retain(t: ASTTypedef): ASTTypedef = (
43- mark-as-released(t.lhs-type.retain);
44- mark-as-released(t.implies.retain);
45- mark-as-released(t.implements.retain);
46- mark-as-released(t.size.retain);
47- mark-as-released(t.alias.retain);
48- mark-as-released(t.opaque-alias.retain);
49- mark-as-released(t.cases.retain);
50- mark-as-released(t.misc-type.retain);
51- mark-as-released(t.implied-phi.retain);
52- t
53- );
54-
55- let .retain(t: AST): AST = (
56- if t.discriminator-case-tag==(t as Tag::Meta).discriminator-case-tag {
57- (t as Tag::Meta).val.retain;
58- };
59- if t.discriminator-case-tag==(t as Tag::App).discriminator-case-tag {
60- (t as Tag::App).left.retain;
61- (t as Tag::App).right.retain;
62- };
63- if t.discriminator-case-tag==(t as Tag::Abs).discriminator-case-tag {
64- (t as Tag::Abs).lhs.retain;
65- (t as Tag::Abs).rhs.retain;
66- mark-as-released((t as Tag::Abs).tt.retain);
67- };
68- if t.discriminator-case-tag==(t as Tag::AType).discriminator-case-tag {
69- mark-as-released((t as Tag::AType).tt.retain);
70- };
71- if t.discriminator-case-tag==(t as Tag::Seq).discriminator-case-tag {
72- mark-as-released((t as Tag::Seq).seq.retain);
73- };
74- if t.discriminator-case-tag==(t as Tag::Glb).discriminator-case-tag {
75- (t as Tag::Glb).val.retain;
76- };
77- if t.discriminator-case-tag==(t as Tag::Typedef).discriminator-case-tag {
78- mark-as-released((t as Tag::Typedef).td.retain);
79- };
80- t
81- );
82-
83- let .release(t: ASTTypedef): Nil = (
84- t.lhs-type.release;
85- t.implies.release;
86- t.implements.release;
87- t.size.release;
88- t.alias.release;
89- t.opaque-alias.release;
90- t.cases.release;
91- t.misc-type.release;
92- t.implied-phi.release;
93- );
94-
95- let .release(t: AST): Nil = (
96- if t.discriminator-case-tag==(t as Tag::Meta).discriminator-case-tag {
97- (t as Tag::Meta).val.release;
98- };
99- if t.discriminator-case-tag==(t as Tag::App).discriminator-case-tag {
100- (t as Tag::App).left.release;
101- (t as Tag::App).right.release;
102- };
103- if t.discriminator-case-tag==(t as Tag::Abs).discriminator-case-tag {
104- (t as Tag::Abs).lhs.release;
105- (t as Tag::Abs).rhs.release;
106- (t as Tag::Abs).tt.release;
107- };
108- if t.discriminator-case-tag==(t as Tag::AType).discriminator-case-tag {
109- (t as Tag::AType).tt.release;
110- };
111- if t.discriminator-case-tag==(t as Tag::Seq).discriminator-case-tag {
112- (t as Tag::Seq).seq.release;
113- };
114- if t.discriminator-case-tag==(t as Tag::Glb).discriminator-case-tag {
115- (t as Tag::Glb).val.release;
116- };
117- if t.discriminator-case-tag==(t as Tag::Typedef).discriminator-case-tag {
118- (t as Tag::Typedef).td.release;
119- };
120- mark-as-released(t);
121- );
122-
0 commit comments