aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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