]> git.draconx.ca Git - cdecl99.git/commitdiff
Fix tests build on compilers without _Bool.
authorNick Bowler <nbowler@draconx.ca>
Mon, 4 Dec 2023 02:17:46 +0000 (21:17 -0500)
committerNick Bowler <nbowler@draconx.ca>
Mon, 4 Dec 2023 05:24:26 +0000 (00:24 -0500)
For these test programs, there is no advantage to using _Bool over
just plain "int" or whatever.

t/declgen.c
t/declgen.h

index 4526c0ee69f0f86cc047c5066705600f91e5b07b..630ab907a66532ab5d3342526f5ce2f1a199a30d 100644 (file)
@@ -23,7 +23,6 @@
 #include <limits.h>
 #include <errno.h>
 #include <assert.h>
-#include <stdbool.h>
 
 #include "declgen.h"
 #include "cdecl.h"
@@ -33,7 +32,7 @@
  * Return a newly-allocated null declarator.  The child member is set by the
  * argument; other members are initialized to zero.
  */
-struct cdecl_declarator *new_declarator(struct cdecl_declarator *child)
+static struct cdecl_declarator *new_declarator(struct cdecl_declarator *child)
 {
        struct cdecl_declarator *d, init = { child, CDECL_DECL_NULL };
 
@@ -47,7 +46,7 @@ struct cdecl_declarator *new_declarator(struct cdecl_declarator *child)
  * Return a newly-allocated void specifier.  The next member is set by the
  * argument; other members are initialized to zero.
  */
-struct cdecl_declspec *new_specifier(struct cdecl_declspec *next)
+static struct cdecl_declspec *new_specifier(struct cdecl_declspec *next)
 {
        struct cdecl_declspec *d, init = { next, CDECL_TYPE_VOID };
 
@@ -61,7 +60,7 @@ struct cdecl_declspec *new_specifier(struct cdecl_declspec *next)
  * Return a newly-allocated declaration.  The next member is set by the
  * argument; other members are initialized to zero.
  */
-struct cdecl *new_cdecl(struct cdecl *next)
+static struct cdecl *new_cdecl(struct cdecl *next)
 {
        struct cdecl *d, init = { next };
 
@@ -76,7 +75,7 @@ struct cdecl *new_cdecl(struct cdecl *next)
  * possible.  Avoid generating keywords, including the English ones, by
  * excluding the letters t, o, a and n.  Reserved words are OK.
  */
-char *gen_identifier(struct test_rng *rng)
+static char *gen_identifier(struct test_rng *rng)
 {
        static const char valid[59] = "_bcdefghijklmpqrsuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        size_t i, n;
@@ -99,16 +98,17 @@ char *gen_identifier(struct test_rng *rng)
  * list is (potentially) unbounded.  We handle the potential unboundedness by
  * generating a list of n qualifiers with probability 1/2^(n+1).  Each
  * qualifier is chosen uniformly at random from the set of possibilities:
- * const, volatile and, if restrictqual is true, restrict.
+ * const, volatile and, if restrictqual is nonzero, restrict.
  */
-struct cdecl_declspec *gen_qualifiers(struct test_rng *rng, bool restrictqual)
+static struct cdecl_declspec *
+gen_qualifiers(struct test_rng *rng, int restrictqual)
 {
        struct cdecl_declspec *s = NULL;
 
        while (test_rng_50_50(rng)) {
                s = new_specifier(s);
 
-               switch (test_rng_uniform_int(rng, 2+restrictqual)) {
+               switch (test_rng_uniform_int(rng, 2+!!restrictqual)) {
                case 0:
                        s->type = CDECL_QUAL_CONST;
                        break;
@@ -130,7 +130,7 @@ struct cdecl_declspec *gen_qualifiers(struct test_rng *rng, bool restrictqual)
  * Generate random function specifiers.  Like qualifiers, function specifiers
  * can appear multiple times.
  */
-struct cdecl_declspec *gen_funcspecs(struct test_rng *rng)
+static struct cdecl_declspec *gen_funcspecs(struct test_rng *rng)
 {
        struct cdecl_declspec *s = NULL;
 
@@ -144,10 +144,11 @@ struct cdecl_declspec *gen_funcspecs(struct test_rng *rng)
 
 /*
  * Generate zero or one random storage-class specifier.  If registeronly is
- * true, then the only possible storage-class specifier is "register".
+ * nonzero, then the only possible storage-class specifier is "register".
  * Otherwise, a specifier type will be selected uniformly at random.
  */
-struct cdecl_declspec *gen_storspecs(struct test_rng *rng, bool registeronly)
+static struct cdecl_declspec *
+gen_storspecs(struct test_rng *rng, int registeronly)
 {
        struct cdecl_declspec *s;
 
@@ -173,7 +174,8 @@ struct cdecl_declspec *gen_storspecs(struct test_rng *rng, bool registeronly)
  */
 #include "typegen.h"
 
-struct cdecl_declspec *gen_typespecs(struct test_rng *rng, bool voidtype)
+static struct cdecl_declspec *
+gen_typespecs(struct test_rng *rng, int voidtype)
 {
        struct cdecl_declspec *specs;
 
@@ -205,7 +207,7 @@ retry:
        return specs;
 }
 
-struct cdecl_declspec *
+static struct cdecl_declspec *
 gen_randomize_specs(struct test_rng *rng, struct cdecl_declspec *specs)
 {
        struct cdecl_declspec *s, **p;
@@ -282,7 +284,7 @@ gen_declspecs(struct test_rng *rng, unsigned flags)
        for (p = s; p->next;)
                p = p->next;
 
-       p->next = gen_qualifiers(rng, false);
+       p->next = gen_qualifiers(rng, 0);
        return gen_randomize_specs(rng, s);
 }
 
@@ -387,7 +389,7 @@ struct cdecl_declarator *gen_declarators(struct test_rng *rng)
                switch (test_rng_uniform_int(rng, limit)) {
                case 0:
                        d->type = CDECL_DECL_POINTER;
-                       d->u.pointer.qualifiers = gen_qualifiers(rng, true);
+                       d->u.pointer.qualifiers = gen_qualifiers(rng, 1);
                        limit = 3;
                        break;
                case 1:
@@ -400,7 +402,7 @@ struct cdecl_declarator *gen_declarators(struct test_rng *rng)
                                struct cdecl_pointer *ptr = &p->u.pointer;
 
                                gen_free_declspecs(ptr->qualifiers);
-                               ptr->qualifiers = gen_qualifiers(rng, false);
+                               ptr->qualifiers = gen_qualifiers(rng, 0);
                        }
                        limit = 1;
                        break;
index ff40b905b59ef91209e2548b6ce751bc34a557ac..714efd24f42515109f15dccd76d90f2065f8eaac 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Generate random C declarations for testing.
- *  Copyright © 2012, 2022 Nick Bowler
+ *  Copyright © 2012, 2022-2023 Nick Bowler
  *
  *  This program is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -28,10 +28,6 @@ enum {
 
 struct test_rng;
 
-struct cdecl_declspec *gen_qualifiers(struct test_rng *rng, _Bool pointer);
-struct cdecl_declspec *gen_typespecs(struct test_rng *rng, _Bool novoid);
-struct cdecl_declspec *gen_randomize_specs(struct test_rng *rng,
-                                           struct cdecl_declspec *specs);
 struct cdecl_declspec *gen_declspecs(struct test_rng *rng, unsigned flags);
 struct cdecl_declarator *gen_declarators(struct test_rng *rng);