From 77434a4c01f15f03cf9eea2b0640d84fb9f1ec35 Mon Sep 17 00:00:00 2001 From: Andre Wagner Date: Tue, 12 May 2026 10:55:08 -0500 Subject: [PATCH] . --- .idea/tyche.iml | 2 ++ TODO.md | 4 ++-- lib/stack.c | 12 ++++++------ test/tests.c | 3 +++ 4 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .idea/tyche.iml diff --git a/.idea/tyche.iml b/.idea/tyche.iml new file mode 100644 index 0000000..9f4c130 --- /dev/null +++ b/.idea/tyche.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/TODO.md b/TODO.md index a1d1492..d4cb6cf 100644 --- a/TODO.md +++ b/TODO.md @@ -7,8 +7,8 @@ Decisions: - [x] Makefile - [x] VALUE -- [ ] Stack - - [ ] Test application (C++?) +- [x] Stack + - [x] Test application - [ ] Heap - [ ] Heap value - [ ] VM diff --git a/lib/stack.c b/lib/stack.c index ccb92fb..c0ca9fa 100644 --- a/lib/stack.c +++ b/lib/stack.c @@ -77,13 +77,13 @@ static size_t stack_len(Stack* s) static TYC_RESULT stack_at(Stack* s, int32_t key, VALUE* v) { if (key >= 0) { - if (stack_top_fp(s) + key >= s->stack_n) + if ((int) stack_top_fp(s) + key >= (int) s->stack_n) return T_ERR_STACK_ACCESS_OUT_OF_RANGE; - *v = s->stack[stack_top_fp(s) + key]; + *v = s->stack[(int) stack_top_fp(s) + key]; } else { if ((int) s->stack_n + key < (int) stack_top_fp(s)) return T_ERR_STACK_ACCESS_OUT_OF_RANGE; - *v = s->stack[s->stack_n + key]; + *v = s->stack[(int) s->stack_n + key]; } return T_OK; @@ -92,13 +92,13 @@ static TYC_RESULT stack_at(Stack* s, int32_t key, VALUE* v) static TYC_RESULT stack_set(Stack* s, int32_t key, VALUE v) { if (key >= 0) { - if (stack_top_fp(s) + key >= s->stack_n) + if ((int) stack_top_fp(s) + key >= (int) s->stack_n) return T_ERR_STACK_ACCESS_OUT_OF_RANGE; - s->stack[stack_top_fp(s) + key] = v; + s->stack[(int) stack_top_fp(s) + key] = v; } else { if ((int) s->stack_n + key < (int) stack_top_fp(s)) return T_ERR_STACK_ACCESS_OUT_OF_RANGE; - s->stack[s->stack_n + key] = v; + s->stack[(int) s->stack_n + key] = v; } return T_OK; diff --git a/test/tests.c b/test/tests.c index 4351403..72b3de5 100644 --- a/test/tests.c +++ b/test/tests.c @@ -72,6 +72,9 @@ int main() assert(stack_at(&s, -1, &v) == T_OK); assert(value_integer(v) == 50); assert(stack_at(&s, -2, &v) == T_OK); assert(value_integer(v) == 40); + assert(stack_set(&s, -2, create_value_integer(99)) == T_OK); + assert(stack_at(&s, -2, &v) == T_OK); assert(value_integer(v) == 99); + assert(stack_at(&s, 3, &v) == T_ERR_STACK_ACCESS_OUT_OF_RANGE); assert(stack_at(&s, -4, &v) == T_ERR_STACK_ACCESS_OUT_OF_RANGE);