mescc: Tinycc support: Array typedefs.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 11 May 2018 16:26:01 +0000 (18:26 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 11 May 2018 16:26:01 +0000 (18:26 +0200)
module/language/c99/compiler.mes
scaffold/tests/t.c

index 33a7a56c0c578d3b58a569348f42e0099e76c4ac..86896bf084c8d46f47bc23c84dbd74e9e0dd2626 100644 (file)
      (let* ((info (type->info type name info))
             (type (ast->type type info)))
        (clone info #:types (acons name type (.types info)))))
+    ;; FIXME: recursive types, pointer, array
+    (((decl-spec-list (stor-spec (typedef)) (type-spec ,type)) (init-declr-list (init-declr (array-of (ident ,name) ,count))))
+     (let* ((info (type->info type name info))
+            (type (ast->type type info))
+            (count (expr->number info count))
+            (type (make-c-array type count)))
+       (clone info #:types (acons name type (.types info)))))
     (((decl-spec-list (stor-spec (,store)) (type-spec ,type)) (init-declr-list . ,inits))
      (let* ((type (ast->type type info))
             (function (.function info)))
index a102f602f57a05a89cc37d2a8b0be3391b442d87..8fe749ce181064c760e99dcd077cd1f50cb81eed 100644 (file)
@@ -43,6 +43,9 @@ struct anion {union {int foo; int bar;}; union {int baz; int bla;};};
 
 struct here {int and;} there;
 
+typedef int int_array_t[1];
+int_array_t bar;
+
 int
 test (struct foo* p)
 {