aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-12-10 15:28:37 +0100
committerMattias Andrée <maandree@operamail.com>2014-12-10 15:28:37 +0100
commit3e0be0faf5bc00e5d140e50140e6bdd1d19ff987 (patch)
tree74b95c367f97a26f7f07f7c07eb2a880ecebe97b
parentmds-kbdc: compile-layout: test return (diff)
downloadmds-3e0be0faf5bc00e5d140e50140e6bdd1d19ff987.tar.gz
mds-3e0be0faf5bc00e5d140e50140e6bdd1d19ff987.tar.bz2
mds-3e0be0faf5bc00e5d140e50140e6bdd1d19ff987.tar.xz
mds-kbdc: compile-layout: m bug fix + more test cases
Signed-off-by: Mattias Andrée <maandree@operamail.com>
-rw-r--r--src/mds-kbdc/builtin-functions.c4
-rw-r--r--src/mds-kbdc/compile-layout.c1
-rw-r--r--test-files/mds-kbdc/compile-layout/valid/get8
-rw-r--r--test-files/mds-kbdc/compile-layout/valid/set8
4 files changed, 18 insertions, 3 deletions
diff --git a/src/mds-kbdc/builtin-functions.c b/src/mds-kbdc/builtin-functions.c
index 7cd13b7..3ad4e83 100644
--- a/src/mds-kbdc/builtin-functions.c
+++ b/src/mds-kbdc/builtin-functions.c
@@ -282,7 +282,7 @@ static char32_t* builtin_function_get_2(const char32_t** restrict args)
const char32_t* restrict b = *args++;
char32_t* restrict rc;
size_t n = (size_t)*b;
- mds_kbdc_tree_t* value = variables_get((size_t)*a);
+ mds_kbdc_tree_t* value = variables_get((size_t)*a)->array.elements;
while (n--)
value = value->next;
fail_if (rc = string_dup(value->compiled_string.string), rc == NULL);
@@ -303,7 +303,7 @@ static char32_t* builtin_function_set_3(const char32_t** restrict args)
const char32_t* restrict c = *args++;
char32_t* restrict rc;
size_t n = (size_t)*b;
- mds_kbdc_tree_t* value = variables_get((size_t)*a);
+ mds_kbdc_tree_t* value = variables_get((size_t)*a)->array.elements;
while (n--)
value = value->next;
free(value->compiled_string.string);
diff --git a/src/mds-kbdc/compile-layout.c b/src/mds-kbdc/compile-layout.c
index e15e7e4..db2680d 100644
--- a/src/mds-kbdc/compile-layout.c
+++ b/src/mds-kbdc/compile-layout.c
@@ -18,7 +18,6 @@
#include "compile-layout.h"
/* TODO add call stack */
/* TODO fix so that for-loops do not generate the same errors/warnings in all iterations [loopy_error]. */
-/* TODO test set/3 and get/2 */
#include "include-stack.h"
#include "builtin-functions.h"
diff --git a/test-files/mds-kbdc/compile-layout/valid/get b/test-files/mds-kbdc/compile-layout/valid/get
new file mode 100644
index 0000000..89dfc37
--- /dev/null
+++ b/test-files/mds-kbdc/compile-layout/valid/get
@@ -0,0 +1,8 @@
+let \1 : { 1 2 3 0 5}
+if \get(1 3)
+ "" : 0
+end if
+if \not(\equals(\get(1 4) 5))
+ 0 : ""
+end if
+
diff --git a/test-files/mds-kbdc/compile-layout/valid/set b/test-files/mds-kbdc/compile-layout/valid/set
new file mode 100644
index 0000000..13d9551
--- /dev/null
+++ b/test-files/mds-kbdc/compile-layout/valid/set
@@ -0,0 +1,8 @@
+let \1 : { 0 }
+if \get(1 0)
+ "" : 0
+end if
+\set(1 0 1)
+if \not(\get(1 0))
+ "" : 0
+end if \ No newline at end of file