mescc: Tinycc support: Fix for ?-operator.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 11 May 2018 13:13:55 +0000 (15:13 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 11 May 2018 13:13:55 +0000 (15:13 +0200)
build-aux/check-mescc.sh
module/language/c99/compiler.mes
scaffold/tests/41-?.c

index 2f52620dafbe0b292644d943a51508638878c1e6..404c8bbebb9d979088eeff973714fb64022b120c 100755 (executable)
@@ -222,7 +222,6 @@ broken="$broken
 28_strings
 
 31_args
-32_led
 34_array_assignment
 37_sprintf
 38_multiple_array_index
index fc57bf534109e789940463b428b6f1edb5a92e40..51a9263e3983676fa02b12563a43fd6b2ee43294 100644 (file)
        (let ((rank (pointer->rank pointer)))
          (rank+= (ast->type type info) rank)))
 
-      ((decl-spec-list (type-spec ,type))
-       (ast->type type info))
+      ((decl-spec-list (type-spec ,type)) (ast->type type info))
 
-       ;; `typedef int size; void foo (unsigned size u)
+      ;;  ;; `typedef int size; void foo (unsigned size u)
       ((decl-spec-list (type-spec ,type) (type-spec ,type2))
        (ast->type type info))
 
-      ((assn-expr ,a ,op ,b)
-       (ast->type a info))
+      ((assn-expr ,a ,op ,b) (ast->type a info))
+
+      ((cond-expr _ ,a ,b) (ast->type a info))
 
       (_ (get-type o info))))
 
index 8bc4b47d5802e0a9636a8e282a0a0f0391f7c839..ad8b5f69e058b4bb94c02f3e8f26a75ba49c4d83 100644 (file)
 #include "30-test.i"
 #include <stdio.h>
 
+union foo
+{
+  int i;
+};
+
 int
 test ()
 {
@@ -33,7 +38,10 @@ test ()
   (one == 1) ? 1 : exit (1);
 
   puts ("t: (f) ?\n");
-  (f) ? exit (1) : 1;
+  (f) ? exit (2) : 1;
+
+  union foo fu;
+  fu.i = 1 ? 0 : 1;
 
   return 0;
 }