bugfix with compile time expression as array size
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 10 Aug 2020 19:54:58 +0000 (14:54 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 10 Aug 2020 19:54:58 +0000 (14:54 -0500)
onyx
progs/stack_based.onyx
src/onyxchecker.c

diff --git a/onyx b/onyx
index 1b601253fb755f74440e77cbe1f04c63ccb92241..0304ad6c83f1b9756eba03cc31494cdac5723bc3 100755 (executable)
Binary files a/onyx and b/onyx differ
index bae444199833f0c3b37210c010f6d1bf5af6db55..7ddfcd13d93f3158117060f61416290db5be6c74 100644 (file)
@@ -101,4 +101,8 @@ start :: proc #export {
     }
     print(soa.y[3]);
     print_ptr(^soa.y[3]);
+
+    fancy : [5 + 3 * 4] i32;
+    fancy[2] = 123;
+    print(fancy[2]);
 }
\ No newline at end of file
index 973f8cb8c70a6fc60eb78202af8121b36726ebe0..8354c39182bf873026bd076c2473b70f060d3982 100644 (file)
@@ -30,6 +30,10 @@ CHECK(function_header, AstFunction* func);
 CHECK(memres, AstMemRes* memres);
 
 static inline void fill_in_type(AstTyped* node) {
+    if (node->type_node && node->type_node->kind == Ast_Kind_Array_Type) {
+        if (((AstArrayType *) node->type_node)->count_expr) check_expression(&((AstArrayType *) node->type_node)->count_expr);
+    }
+
     if (node->type == NULL)
         node->type = type_build_from_ast(semstate.allocator, node->type_node);
 }