]> Nishi Git Mirror - gwion.git/commitdiff
:art: Add --cdoc
authorJérémie Astor <fennecdjay@gmail.com>
Fri, 14 May 2021 23:34:12 +0000 (01:34 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Fri, 14 May 2021 23:34:12 +0000 (01:34 +0200)
21 files changed:
.gitmodules
Makefile
ast
fmt [new submodule]
include/gwi.h
include/gwion.h
include/gwiondata.h
libcmdapp
src/arg.c
src/gwion.c
src/gwiondata.c
src/import/import_cdef.c
src/import/import_enum.c
src/import/import_fdef.c
src/import/import_internals.c
src/import/import_item.c
src/import/import_oper.c
src/import/import_special.c
src/import/import_tdef.c
src/import/import_type.c
src/import/import_udef.c

index 854622189ee971abb1e32c0df008aff839ba70df..5149f98e3be41d1c67f0b9210d2ff4db9a88ead2 100644 (file)
@@ -14,3 +14,6 @@
 [submodule "libcmdapp"]
        path = libcmdapp
        url = https://github.com/euppal/libcmdapp
+[submodule "fmt"]
+       path = fmt
+       url = https://github.com/Gwion/gwion-fmt
index a3797bcb2527b0042f17df6cd53bd28241d16891..eaa71bc2b3713028706dbb0d35e2475277e82472 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -22,7 +22,7 @@ test_dir += examples
 
 
 CFLAGS += -Iutil/include -Iast/include -Ilibcmdapp/src -D_GNU_SOURCE
-CFLAGS += -Iast/libprettyerr/src
+CFLAGS += -Iast/libprettyerr/src -Ifmt/include
 
 # add commit hash to version for now
 CFLAGS += -DGWION_VERSION=\"$(shell git log -n1 --format="%h")\"
@@ -51,6 +51,7 @@ CFLAGS += -DGWION_BUILTIN
 _GWLIBS = util/libgwion_util.a ast/libgwion_ast.a libcmdapp/libcmdapp.a lib${PRG}.a util/libtermcolor/libtermcolor.a ast/libprettyerr/libprettyerr.a
 GWLIBS := lib${PRG}.a libcmdapp/libcmdapp.a ast/libgwion_ast.a
 GWLIBS += util/libgwion_util.a ast/libprettyerr/libprettyerr.a util/libtermcolor/libtermcolor.a
+GWLIBS += fmt/libgwion-fmt.a
 _LDFLAGS = ${GWLIBS} ${LDFLAGS}
 
 # we are not pedantic
diff --git a/ast b/ast
index 883e43a8b7068e5f17bfb1963d5eea676a326edb..13713de48c46bbbeb8d6b69518a959f6d378c00d 160000 (submodule)
--- a/ast
+++ b/ast
@@ -1 +1 @@
-Subproject commit 883e43a8b7068e5f17bfb1963d5eea676a326edb
+Subproject commit 13713de48c46bbbeb8d6b69518a959f6d378c00d
diff --git a/fmt b/fmt
new file mode 160000 (submodule)
index 0000000..bec8fef
--- /dev/null
+++ b/fmt
@@ -0,0 +1 @@
+Subproject commit bec8fef4607fac18fa92da87e95e0da1c3ac76f4
index 3fe25e96e86a91a2a2cd923d4934556d31a8cef7..5330e9394840d7c5c68717f59fb0ffa1b05588df 100644 (file)
@@ -1,16 +1,11 @@
 #ifndef __GWI
 #define __GWI
 
-#ifdef GWION_DOC
 #include "gwfmt.h"
-#define gwiheader(a,...) do { lint_nl(a->lint); lint_indent(a->lint); lint(a->lint, "{-}#!+ {/}%s{0}\n", __VA_ARGS__); } while(0)
-#define gwidoc(a,...)    do { lint_nl(a->lint); lint_indent(a->lint); lint(a->lint, "{-}#!- {/}%s{0}\n", __VA_ARGS__); } while(0)
-#define gwinote(a,...)   do { lint_indent(a->lint); lint(a->lint, "{-}#!- {/}%s{0}\n", __VA_ARGS__); } while(0)
-#else
-#define gwiheader(a,...)
-#define gwidoc(a,...)
-#define gwinote(a,...)
-#endif
+#define gwiheader(a,...) if(a->gwion->data->cdoc) do {lint_nl(gwi->lint); lint_indent(gwi->lint); lint(gwi->lint, "{-}#!+ {/}%s{0}\n", __VA_ARGS__); } while(0)
+#define gwidoc(a,...)     if(a->gwion->data->cdoc) do { lint_nl(a->lint); lint_indent(a->lint); lint(a->lint, "{-}#!- {/}%s{0}\n", __VA_ARGS__); } while(0)
+#define gwinote(a,...)    if(a->gwion->data->cdoc) do { lint_indent(a->lint); lint(a->lint, "{-}#!- {/}%s{0}\n", __VA_ARGS__); } while(0)
+
 struct Gwi_ {
   struct Gwion_ *const gwion;
   Ast body;
@@ -18,9 +13,7 @@ struct Gwi_ {
   struct OperCK *oper; // _misc
   struct Vector_ effects;
   loc_t loc;
-#ifdef GWION_DOC
   Lint *lint;
-#endif
   uint8_t tmpls;
 };
 
index 220d040ec8f812ca7c3a61688c713fce51a804f6..688ca9421763be1fdafc19f397b12d6ef426d5e8 100644 (file)
@@ -37,4 +37,5 @@ ANN static inline Type type_class(const Gwion gwion, const Type t) {
 }
 
 ANN void gwion_set_debug(const Gwion gwion, const bool dbg);
+ANN void gwion_set_cdoc(const Gwion gwion, const bool dbg);
 #endif
index eccc3d15d9d0fb735ce487921e0048374b8671bc..2c621ef047271ba9719e1b3b72116263b8a26793 100644 (file)
@@ -6,9 +6,9 @@ typedef struct GwionData_ {
   MUTEX_TYPE mutex;
   struct Vector_ child;
   struct Vector_ child2;
-  struct Vector_ reserved;
   struct Passes_  *passes;
   struct Map_ plug;
+  bool   cdoc;
 } GwionData;
 
 ANN GwionData* new_gwiondata(MemPool);
index 9a2bcfb85e5ca94cc6f2697f5a41c09c1c18db3f..b063526d5aa60de490c9ae2fdca6ee9c87bae9c2 160000 (submodule)
--- a/libcmdapp
+++ b/libcmdapp
@@ -1 +1 @@
-Subproject commit 9a2bcfb85e5ca94cc6f2697f5a41c09c1c18db3f
+Subproject commit b063526d5aa60de490c9ae2fdca6ee9c87bae9c2
index 15d51cb5e5423f96a86bc71acedbf03cf9b5fe33..133d7ea603c564a45498dd5a309b268e782561ba 100644 (file)
--- a/src/arg.c
+++ b/src/arg.c
@@ -18,7 +18,7 @@ enum {
   DRIVER, SRATE, NINPUT, NOUTPUT,
 // pp options
   DEFINE, UNDEF, INCLUDE,
-  DEBUG,
+  DEBUG, CDOC,
   NOPTIONS
 };
 
@@ -49,7 +49,8 @@ enum arg_type {
   ARG_DEFINE,
   ARG_UNDEF,
   ARG_INCLUDE,
-  ARG_DEBUG
+  ARG_DEBUG,
+  ARG_CDOC
 };
 
 ANN static void arg_init(Arg* arg) {
@@ -70,19 +71,24 @@ ANN void arg_release(Arg* arg) {
   vector_release(&arg->config);
 }
 
-static inline bool _get_debug(const m_str dbg) {
-  if(!dbg || !strcmp(dbg, "true"))
+static inline bool str2bool(const char *str) {
+  if(!str || !strcmp(str, "true"))
     return true;
-  if(!strcmp(dbg, "false"))
+  if(!strcmp(str, "false"))
     return false;
-  return atoi(dbg) ? true : false;
+  return atoi(str) ? true : false;
 }
 
-ANN static inline void get_debug(const Gwion gwion, const m_str dbg) {
-  const bool is_dbg = _get_debug(dbg);
+ANN static inline void get_debug(const Gwion gwion, const char *dbg) {
+  const bool is_dbg = str2bool(dbg);
   gwion_set_debug(gwion, is_dbg);
 }
 
+ANN static inline void get_cdoc(const Gwion gwion, const char *cdoc) {
+  const bool is_cdoc = str2bool(cdoc);
+  gwion_set_cdoc(gwion, is_cdoc);
+}
+
 ANN void arg_compile(const Gwion gwion, Arg *arg) {
   const Vector v = &arg->add;
   for(m_uint i = 0; i < vector_size(v); i++) {
@@ -203,6 +209,11 @@ static void setup_options(cmdapp_t* app, cmdopt_t* opt) {
         CMDOPT_MAYTAKEARG, NULL,
         "set/unset debug mode", &opt[DEBUG]
     );
+    cmdapp_set(app,
+        'H', "cdoc",
+        CMDOPT_MAYTAKEARG, NULL,
+        "set/unset cdoc mode", &opt[CDOC]
+    );
 }
 
 static inline void add2arg(Arg *const arg, const char *data, const enum arg_type type) {
@@ -326,6 +337,9 @@ static void myproc(void *data, cmdopt_t* option, const char* arg) {
         case 'G':
           add2arg(_arg, option->value, ARG_DEBUG);
           break;
+        case 'H':
+          get_cdoc(arg_int->gwion, option->value);
+          break;
     }
   }
 }
index 879843a5955c1948b2bb1e1ab74cba725c487aab..092fc9f6e1327aaceb2623e941a76f371e63ffe6 100644 (file)
@@ -211,3 +211,6 @@ ANN Nspc pop_global(struct Gwion_ *gwion) {
 ANN void gwion_set_debug(const Gwion gwion, const bool dbg) {
   gwion->emit->info->debug = dbg;
 }
+ANN void gwion_set_cdoc(const Gwion gwion, const bool cdoc) {
+  gwion->data->cdoc = cdoc;
+}
index a85cd6a5acf6f476f440807957be9d5fc943f6db..13d88071e4b73344e53c57947b7a592109b32274 100644 (file)
@@ -20,7 +20,6 @@ ANN GwionData* new_gwiondata(MemPool mp) {
   GwionData *data = gwiondata(mp);
   map_init(&data->freearg);
   map_init(&data->id);
-  vector_init(&data->reserved);
   data->passes = new_passes(mp);
   return data;
 }
@@ -29,7 +28,6 @@ ANN GwionData* cpy_gwiondata(MemPool mp, const GwionData* src) {
   GwionData *data = gwiondata(mp);
   data->freearg = src->freearg;
   data->id = src->id;
-  data->reserved = src->reserved;
   data->plug = src->plug;
   data->passes = src->passes;
   return data;
@@ -46,7 +44,6 @@ ANN void free_gwiondata(const struct Gwion_ *gwion) {
   for(m_uint i = 0; i < map_size(&data->id); ++i)
     mp_free(gwion->mp, SpecialId, (struct SpecialId_*)map_at(&data->id, i));
   map_release(&data->id);
-  vector_release(&data->reserved);
   free_passes(gwion->mp, data->passes);
   if(data->plug.ptr)
     free_plug(gwion);
index fb1e2148e46908516d66e7c08fc7517e0ffba0db..d6fed1549b6b1fadef5dddafbade4084d88ebdb4 100644 (file)
@@ -63,11 +63,11 @@ ANN static Type type_finish(const Gwi gwi, const Type t) {
     gwi->tmpls++;
     add_template(gwi->gwion->env, t);
   }
-#ifdef GWION_DOC
-  lint_indent(gwi->lint);
-  gwi->lint->indent++;
-  lint_class_def(gwi->lint, t->info->cdef);
-#endif
+  if(gwi->gwion->data->cdoc) {
+    lint_indent(gwi->lint);
+    gwi->lint->indent++;
+    lint_class_def(gwi->lint, t->info->cdef);
+  }
   return t;
 }
 
@@ -122,11 +122,11 @@ ANN Type gwi_struct_ini(const Gwi gwi, const m_str name) {
 }
 
 ANN m_int gwi_class_end(const Gwi gwi) {
-#ifdef GWION_DOC
-  gwi->lint->indent--;
-  lint_rbrace(gwi->lint);
-  lint_nl(gwi->lint);
-#endif
+  if(gwi->gwion->data->cdoc) {
+    gwi->lint->indent--;
+    lint_rbrace(gwi->lint);
+    lint_nl(gwi->lint);
+  }
   if(!gwi->gwion->env->class_def)
     GWI_ERR_B(_("import: too many class_end called."))
   nspc_allocdata(gwi->gwion->mp, gwi->gwion->env->class_def->nspc);
index 7c2b9a84668add6256776c7850ff2e1095a8808b..87a84f9e4d614588e4641c3fcdc38b48ffeee8d8 100644 (file)
@@ -83,10 +83,10 @@ ANN Type gwi_enum_end(const Gwi gwi) {
   gwi->ck->tmpl = NULL;
   const m_bool ret = traverse_enum_def(gwion->env, edef);
   import_enum_end(gwi, &edef->values);
-#ifdef GWION_DOC
-  lint_indent(gwi->lint);
-  lint_enum_def(gwi->lint, edef);
-#endif
+  if(gwi->gwion->data->cdoc) {
+    lint_indent(gwi->lint);
+    lint_enum_def(gwi->lint, edef);
+  }
   const Type t = ret > 0 ? edef->t : NULL;
   if(edef->values.ptr)
     vector_release(&edef->values);
index eb3c169e64b3fc524bbcb257979f3daeabda1f99..42f8baaba3eaea5d878c5b5cdd6376ead654eb48 100644 (file)
@@ -54,10 +54,10 @@ ANEW ANN static Func_Base* gwi_func_base(const Gwi gwi, ImportCK *ck) {
 ANEW ANN static Func_Def import_fdef(const Gwi gwi, ImportCK *ck) {
   Func_Base* base = gwi_func_base(gwi, ck);
   const Func_Def fdef = new_func_def(gwi->gwion->mp, base, NULL);
-#ifdef GWION_DOC
-  lint_indent(gwi->lint);
-  lint_func_def(gwi->lint, fdef);
-#endif
+  if(gwi->gwion->data->cdoc) {
+    lint_indent(gwi->lint);
+    lint_func_def(gwi->lint, fdef);
+  }
   if(gwi->effects.ptr) {
     vector_init(&fdef->base->effects);
     vector_copy2(&gwi->effects, &fdef->base->effects);
@@ -136,10 +136,10 @@ ANN Type gwi_fptr_end(const Gwi gwi, const ae_flag flag) {
   CHECK_BO(ck_ok(gwi, ck_fdef));
   DECL_OO(const Fptr_Def, fptr, = import_fptr(gwi));
   fptr->base->flag |= flag;
-#ifdef GWION_DOC
-  lint_indent(gwi->lint);
-  lint_fptr_def(gwi->lint, fptr);
-#endif
+  if(gwi->gwion->data->cdoc) {
+    lint_indent(gwi->lint);
+    lint_fptr_def(gwi->lint, fptr);
+  }
   if(safe_tflag(gwi->gwion->env->class_def, tflag_tmpl)/* && !fptr->base->tmpl*/) {
     section_fptr(gwi, fptr);
     ck_end(gwi);
index 95d75916777a385cc4d4e5da85214b2f1e5189e3..19b25541cb00a7a7d2e97870701653afec1b4b47 100644 (file)
@@ -28,17 +28,20 @@ ANN void gwi_reset(const Gwi gwi) {
   env_reset(gwi->gwion->env);
 }
 
+ANN static m_bool run_with_doc(const Gwi gwi, m_bool (*f)(const Gwi)) {
+  struct LintState ls = { .builtin=true };
+  Lint linter = { .mp=gwi->gwion->mp, .ls=&ls };
+  lint(&linter, "{-}#!+ %s{0}\n", gwi->gwion->env->name);
+  gwi->lint = &linter;
+  return f(gwi);
+}
 ANN m_bool gwi_run(const Gwion gwion, m_bool (*f)(const Gwi)) {
   const m_str name = gwion->env->name;
   OperCK oper = {};
+printf("cdoc %u\n", gwion->data->cdoc);
   struct Gwi_ gwi = { .gwion=gwion, .oper=&oper };
-#ifdef GWION_DOC
-  struct LintState ls = { .builtin=true };
-  Lint linter = { .mp=gwion->mp, .ls=&ls };
-  lint(&linter, "{-}#!+ %s{0}\n", name);
-  gwi.lint = &linter;
-#endif
-  const m_bool ret = f(&gwi);
+  const m_bool ret = !gwion->data->cdoc ?
+        f(&gwi) : run_with_doc(&gwi, f);
   if(ret < 0)
     gwi_reset(&gwi);
   gwion->env->name = name;
index 73c04ee622527b3c17af88f75f6b66a5ffcd89d7..f5c29824729c92614d56ef0375cbe4f610750dcf 100644 (file)
@@ -34,12 +34,12 @@ ANN2(1) m_int gwi_item_end(const Gwi gwi, const ae_flag flag, union value_data a
   CHECK_BB(ck_ok(gwi, ck_item));
   const Env env = gwi->gwion->env;
   gwi->ck->exp->d.exp_decl.td->flag = flag;
-#ifdef GWION_DOC
-  lint_indent(gwi->lint);
-  lint_exp(gwi->lint, gwi->ck->exp);
-  lint_sc(gwi->lint);
-  lint_nl(gwi->lint);
-#endif
+  if(gwi->gwion->data->cdoc) {
+    lint_indent(gwi->lint);
+    lint_exp(gwi->lint, gwi->ck->exp);
+    lint_sc(gwi->lint);
+    lint_nl(gwi->lint);
+  }
   if(env->class_def && tflag(env->class_def, tflag_tmpl))
     return gwi_item_tmpl(gwi);
   CHECK_BB(traverse_exp(env, gwi->ck->exp));
index f5f8ab92f1573d54cba0e7947663a3157a9d8577..9dea3fa14e20df2dde04f4ea796bf03e0ff70984 100644 (file)
@@ -69,30 +69,30 @@ ANN void gwi_oper_eff(const Gwi gwi, const m_str effect) {
 }
 
 ANN m_int gwi_oper_end(const Gwi gwi, const m_str op, const f_instr f) {
-#ifdef GWION_DOC
-  lint_indent(gwi->lint);
-  lint(gwi->lint, "{+C}operator{0} ");
-  if(gwi->oper->lhs && !gwi->oper->rhs) {
-    lint(gwi->lint, "{+}%s{0}", gwi->oper->lhs != (m_str)1 ? gwi->oper->lhs : "@Any");
-    lint_space(gwi->lint);
+  if(gwi->gwion->data->cdoc) {
+    lint_indent(gwi->lint);
+    lint(gwi->lint, "{+C}operator{0} ");
+    if(gwi->oper->lhs && !gwi->oper->rhs) {
+      lint(gwi->lint, "{+}%s{0}", gwi->oper->lhs != (m_str)1 ? gwi->oper->lhs : "@Any");
+      lint_space(gwi->lint);
+    }
+    if(gwi->oper->ret) {
+      lint(gwi->lint, "{+}%s{0}", gwi->oper->ret != (m_str)1 ? gwi->oper->ret : "@Any");
+      lint_space(gwi->lint);
+    }
+    lint(gwi->lint, "{/}%s{0}", op);
+    lint_lparen(gwi->lint);
+    if(gwi->oper->lhs && gwi->oper->rhs) {
+      lint(gwi->lint, "{+}%s{0}", gwi->oper->lhs != (m_str)1 ? gwi->oper->lhs : "@Any");
+      lint_comma(gwi->lint);
+      lint_space(gwi->lint);
+    }
+    if(gwi->oper->rhs)
+      lint(gwi->lint, "{+}%s{0}", gwi->oper->rhs != (m_str)1 ? gwi->oper->rhs : "@Any");
+    lint_rparen(gwi->lint);
+    lint_sc(gwi->lint);
+    lint_nl(gwi->lint);
   }
-  if(gwi->oper->ret) {
-    lint(gwi->lint, "{+}%s{0}", gwi->oper->ret != (m_str)1 ? gwi->oper->ret : "@Any");
-    lint_space(gwi->lint);
-  }
-  lint(gwi->lint, "{/}%s{0}", op);
-  lint_lparen(gwi->lint);
-  if(gwi->oper->lhs && gwi->oper->rhs) {
-    lint(gwi->lint, "{+}%s{0}", gwi->oper->lhs != (m_str)1 ? gwi->oper->lhs : "@Any");
-    lint_comma(gwi->lint);
-    lint_space(gwi->lint);
-  }
-  if(gwi->oper->rhs)
-    lint(gwi->lint, "{+}%s{0}", gwi->oper->rhs != (m_str)1 ? gwi->oper->rhs : "@Any");
-  lint_rparen(gwi->lint);
-  lint_sc(gwi->lint);
-  lint_nl(gwi->lint);
-#endif
   gwi->oper->sym = insert_symbol(gwi->gwion->st, op);
   const m_bool ret = import_op(gwi, gwi->oper, f);
   gwi->oper->ck = NULL;
index bb902c4783f0ffa7fd41851f96c1fdb26bbd3664..f1be4ebdbdd42d35fcb6cfd8585195c44f5fca32 100644 (file)
@@ -25,20 +25,14 @@ ANN void gwi_register_pass(const Gwi gwi, const m_str name, const compilation_pa
   pass_register(gwi->gwion, name, pass);
 }
 
-ANN void gwi_reserve(const Gwi gwi, const m_str str) {
-  vector_add(&gwi->gwion->data->reserved, (vtype)insert_symbol(gwi->gwion->st, str));
-}
-
 ANN void gwi_specialid(const Gwi gwi, const m_str id, const SpecialId spid) {
-#ifdef GWION_DOC
-  lint(gwi->lint, "{+C}specialid{0} %s{/}%s{0};\n",
-      spid->is_const ? "{+G}const{0} " : "",
-      id);
-#endif
+  if(gwi->gwion->data->cdoc)
+    lint(gwi->lint, "{+C}specialid{0} %s{/}%s{0};\n",
+        spid->is_const ? "{+G}const{0} " : "",
+        id);
   struct SpecialId_ *a = mp_calloc(gwi->gwion->mp, SpecialId);
   memcpy(a, spid, sizeof(struct SpecialId_));
   map_set(&gwi->gwion->data->id, (vtype)insert_symbol(gwi->gwion->st, id), (vtype)a);
-  gwi_reserve(gwi, id);
 }
 
 ANN void gwi_set_loc(const Gwi gwi, const m_str file, const uint line) {
index 0f9c6214568554abd2a90bdd539bf101f03c862f..47ae799637e7ff2444baa8a268119ae8d0b395ea 100644 (file)
@@ -33,10 +33,10 @@ ANN Type gwi_typedef_end(const Gwi gwi, const ae_flag flag) {
   gwi->ck->td = NULL;
   gwi->ck->tmpl = NULL;
   const m_bool ret = traverse_type_def(gwi->gwion->env, tdef);
-#ifdef GWION_DOC
-  lint_indent(gwi->lint);
-  lint_type_def(gwi->lint, tdef);
-#endif
+  if(gwi->gwion->data->cdoc) {
+    lint_indent(gwi->lint);
+    lint_type_def(gwi->lint, tdef);
+  }
   const Type t = tdef->type;
   set_tflag(t, tflag_scan0 | tflag_scan1 | tflag_scan2 | tflag_check | tflag_emit);
   free_type_def(gwi->gwion->mp, tdef);
index 00dc68d157c66d03b9552a9e472fef1a91490b1e..6237ea57d234aadfcdf6fac51915aab87365ea6c 100644 (file)
@@ -30,14 +30,14 @@ ANN2(1) static Type get_parent(const Gwi gwi, const m_str parent_name) {
 }
 
 ANN2(1,2) Type gwi_mk_type(const Gwi gwi, const m_str name, const m_uint size, const m_str parent_name) {
-#ifdef GWION_DOC
-  lint_indent(gwi->lint);
-  lint(gwi->lint, "{+C}primitive{0} {+}%s{0}", name);
-  if(parent_name)
-    lint(gwi->lint, " {+C}extends{0} {+}%s{0}", parent_name);
-  lint_sc(gwi->lint);
-  lint_nl(gwi->lint);
-#endif
+  if(gwi->gwion->data->cdoc) {
+    lint_indent(gwi->lint);
+    lint(gwi->lint, "{+C}primitive{0} {+}%s{0}", name);
+    if(parent_name)
+      lint(gwi->lint, " {+C}extends{0} {+}%s{0}", parent_name);
+    lint_sc(gwi->lint);
+    lint_nl(gwi->lint);
+  }
   CHECK_OO(gwi_str2sym(gwi, name));
   const Type parent = get_parent(gwi, parent_name);
   const Type t = new_type(gwi->gwion->mp, name, parent);
index 5fd9e2eb09a54d4be3975d9229d984e6318ebc7e..fe3c74f4bb3f8ad545d346f2b507f2c2de9831cb 100644 (file)
@@ -52,10 +52,10 @@ ANN static Type union_type(const Gwi gwi, const Union_Def udef) {
 //  set_vflag(udef->value, vflag_builtin);
 //  const M_Object o = new_object(gwi->gwion->mp, NULL, udef->value->type);
 //  udef->value->d.ptr = (m_uint*)o;
-#ifdef GWION_DOC
-  lint_indent(gwi->lint);
-  lint_union_def(gwi->lint, udef);
-#endif
+  if(gwi->gwion->data->cdoc) {
+    lint_indent(gwi->lint);
+    lint_union_def(gwi->lint, udef);
+  }
   return udef->type;
 }