]> Nishi Git Mirror - gwion.git/commitdiff
:art: Test import names
authorfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 11 Oct 2019 20:39:20 +0000 (22:39 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 11 Oct 2019 20:39:20 +0000 (22:39 +0200)
src/lib/import.c
tests/import/invalid_names.c [new file with mode: 0644]
tests/sh/import.sh

index 78912a797b6de794cc20bca348ebdb828c5a40c1..5180ec5e67a679b65d48f544ff17013224d8dde8 100644 (file)
@@ -100,22 +100,20 @@ ANN static m_bool name_valid(const Gwi gwi, const m_str a) {
         || (c == '_') || (c >= '0' && c <= '9'))
       continue;
     if(c == '<') {
+      if(a[++i] != '~')
+        GWI_ERR_B(_("illegal templating in name '%s'."), a)
       lvl++;
       ++i;
       continue;
-    }
-    if(c == ',') {
+    } else if(c == ',') {
       if(!lvl)
         GWI_ERR_B(_("illegal use of ',' outside of templating in name '%s'."), a)
-      continue;
-    }
-    if(c == '~') {
-      if(!lvl)
+    } else if(c == '~') {
+      if(!lvl || a[++i] != '>')
         GWI_ERR_B(_("illegal templating in name '%s'."), a)
       lvl--;
-      continue;
-    }
-    GWI_ERR_B(_("illegal character '%c' in name '%s'."), c, a)
+    } else
+      GWI_ERR_B(_("illegal character '%c' in name '%s'."), c, a)
   }
   return !lvl ? 1 : -1;
 }
diff --git a/tests/import/invalid_names.c b/tests/import/invalid_names.c
new file mode 100644 (file)
index 0000000..abb817c
--- /dev/null
@@ -0,0 +1,33 @@
+#include <stdlib.h>
+#include <math.h>
+#include "gwion_util.h"
+#include "gwion_ast.h"
+#include "oo.h"
+#include "env.h"
+#include "vm.h"
+#include "gwion.h"
+#include "type.h"
+#include "instr.h"
+#include "object.h"
+#include "value.h"
+#include "operator.h"
+#include "import.h"
+#include "ugen.h"
+#include "func.h"
+#include "gwi.h"
+
+GWION_IMPORT(trig) {
+  const Type t0 = gwi_mk_type(gwi, "T~", SZ_INT, NULL);
+  gwi_add_type(gwi, t0);
+
+  const Type t1 = gwi_mk_type(gwi, "T,", SZ_INT, NULL);
+  gwi_add_type(gwi, t1);
+
+  const Type t2 = gwi_mk_type(gwi, "<a>T", SZ_INT, NULL);
+  gwi_add_type(gwi, t2);
+
+  const Type t3 = gwi_mk_type(gwi, "<~a~>T", SZ_INT, NULL);
+  gwi_add_type(gwi, t3);
+
+  return GW_OK;
+}
index d0c1b0e0add2b7963ef46ec276e39eaf0e1e5ad0..0b2c480be0d318089d14870895da2231a5148e2e 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/bash
-# [test] #39
+# [test] #40
 
 n=0
 [ "$1" ] && n="$1"