]> Nishi Git Mirror - gwion.git/commitdiff
:art: Introduce class_def_cleaner
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Sat, 9 May 2020 19:21:25 +0000 (21:21 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Sat, 9 May 2020 19:21:25 +0000 (21:21 +0200)
include/clean.h
src/clean.c
src/env/type.c

index 5e64850e2012dc355bc4b23ea54549d596bc0e81..bda9062f0dc217d72ea4abe00cb88be434776432 100644 (file)
@@ -2,6 +2,7 @@
 #define __CLEAN
 
 void ast_cleaner(const Gwion, Ast);
+void class_def_cleaner(const Gwion, Class_Def);
 void func_def_cleaner(const Gwion, Func_Def);
 #ifdef __CLEAN_IMPL
 typedef struct {
index 19bb6d9172237f301a3c990be2bd6907b09b4800..361bcfd13f3893c4a52f4362c1f571f253c9839f 100644 (file)
@@ -297,6 +297,12 @@ ANN static void clean_class_def(Clean *a, Class_Def b) {
     clean_ast(a, b->body);
 }
 
+ANN void class_def_cleaner(const Gwion gwion, Class_Def b) {
+  Clean a = { .gwion=gwion };
+  clean_class_def(&a, b);
+  free_class_def(gwion->mp, b);
+}
+
 ANN static void clean_enum_def(Clean *a, Enum_Def b) {
   clean_id_list(a, b->list);
 }
index 391bad4497e8463bdec5bc9a3cb7646085675d38..3b28a68d018ef296a01013640e7d85ed399ff910 100644 (file)
@@ -5,6 +5,7 @@
 #include "traverse.h"
 #include "parse.h"
 #include "gwion.h"
+#include "clean.h"
 
 ANN static inline m_bool freeable(const Type a) {
   return !GET_FLAG(a, nonnull) && GET_FLAG(a, template);
@@ -22,7 +23,7 @@ ANN static void free_type(Type a, Gwion gwion) {
       a->e->def->union_def = NULL;
     }
     if(a->e->def)
-      free_class_def(gwion->mp, a->e->def);
+      class_def_cleaner(gwion, a->e->def);
   }
   if(a->nspc)
     REM_REF(a->nspc, gwion);