]> Nishi Git Mirror - gwion.git/commitdiff
:art: Test mk_type
authorfennecdjay <astor.jeremie@wanadoo.fr>
Tue, 22 Oct 2019 15:12:40 +0000 (17:12 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Tue, 22 Oct 2019 15:12:40 +0000 (17:12 +0200)
src/lib/import.c
tests/import/mk_type_array.c [new file with mode: 0644]
tests/sh/import.sh

index b61f37b9cb2555f8b431d23986b3a557cf0c5128..8a63647cb8fed5adfc075d8d841dd5f40e23d6c9 100644 (file)
@@ -240,8 +240,12 @@ ANN static m_bool mk_xtor(MemPool p, const Type type, const m_uint d, const ae_f
 }
 
 ANN2(1,2) Type gwi_mk_type(const Gwi gwi NUSED, const m_str name, const m_uint size, const m_str parent_name) {
-  m_uint depth;
-  const Type_Decl* td = parent_name ? str2decl(gwi->gwion->env, parent_name, &depth, gwi->loc) : NULL;
+  m_uint depth = 0;
+  Type_Decl* td = parent_name ? str2decl(gwi->gwion->env, parent_name, &depth, gwi->loc) : NULL;
+  if(depth) {
+    free_type_decl(gwi->gwion->mp, td);
+    GWI_ERR_O(_("can't create a type with explicit array parent. use typedef for that"))
+  }
   const Type parent = td ? known_type(gwi->gwion->env, td) : NULL;
   const Type t = new_type(gwi->gwion->mp, 0, name, parent);
   t->size = size;
@@ -509,7 +513,7 @@ ANN static Arg_List make_dll_arg_list(const Gwi gwi, DL_Func * dl_fun) {
   return arg_list;
 }
 
-ANN Type_Decl* import_td(const Gwi gwi, const m_str name) {
+ANN static Type_Decl* import_td(const Gwi gwi, const m_str name) {
   const Env env = gwi->gwion->env;
   m_uint array_depth;
   DECL_OO(const ID_List, type_path, = str2list(env, name, &array_depth, gwi->loc))
diff --git a/tests/import/mk_type_array.c b/tests/import/mk_type_array.c
new file mode 100644 (file)
index 0000000..46ca557
--- /dev/null
@@ -0,0 +1,20 @@
+#include "gwion_util.h"
+#include "gwion_ast.h"
+#include "oo.h"
+#include "vm.h"
+#include "env.h"
+#include "type.h"
+#include "object.h"
+#include "instr.h"
+#include "gwion.h"
+#include "value.h"
+#include "operator.h"
+#include "import.h"
+#include "gwi.h"
+
+MFUN(test_mfun){}
+GWION_IMPORT(begin_class) {
+  Type t_invalid_var_name;
+  GWI_OB((t_invalid_var_name = gwi_mk_type(gwi, "invalid_var_name", SZ_INT, "Object[]")))
+  return GW_OK;
+}
index 3c7baa29fb0b41a4e7a56c47a70137c320520a93..1ddfbb7fbe4f7b35c71fd53e3b4202fd2af5389b 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/bash
-# [test] #64
+# [test] #65
 
 n=0
 [ "$1" ] && n="$1"