Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r52:052baa9904a8
Date: 2014-11-17 16:19 +0100
http://bitbucket.org/cffi/creflect/changeset/052baa9904a8/

Log:    Adapt more tests

diff --git a/creflect/creflect.h b/creflect/creflect.h
--- a/creflect/creflect.h
+++ b/creflect/creflect.h
@@ -39,7 +39,7 @@
     void (*define_type)(CRX_SELF, const char *, crx_type_t *);
     void (*define_var)(CRX_SELF, const char *, crx_type_t *,
                        void *);
-    void (*error)(CRX_SELF, const char *, crx_type_t *);
+    void (*error)(CRX_SELF, const char *);
 } crx_builder_t;
 #undef CRX_SELF
 
diff --git a/test/cgcompile.c b/test/cgcompile.c
--- a/test/cgcompile.c
+++ b/test/cgcompile.c
@@ -155,9 +155,9 @@
     printf("VAR %s: %s\n", name, t->text);
 }
 
-static void tst_error(crx_builder_t *cb, const char *msg, crx_type_t *t)
+static void tst_error(crx_builder_t *cb, const char *msg)
 {
-    printf("ERROR %s %s\n", msg, t ? t->text : "");
+    printf("ERROR: %s\n", msg);
 }
 
 static crx_builder_t maincb = {
diff --git a/test/codegen/003.c b/test/codegen/003.c
--- a/test/codegen/003.c
+++ b/test/codegen/003.c
@@ -13,5 +13,6 @@
         *p1 = -1;  /* check that 'num_t' is not declared 'const' */
         t1 = CRX_INT_TYPE(cb, *p1, "int");
         cb->define_type(cb, "num_t", t1);
+#expect TYPEDEF num_t = int
     }
 }
diff --git a/test/codegen/003b.c b/test/codegen/003b.c
--- a/test/codegen/003b.c
+++ b/test/codegen/003b.c
@@ -2,15 +2,17 @@
 
 # ____________________________________________________________
 
-void test003b(creflect_builder_t *cb)
+void test003b(crx_builder_t *cb)
 {
+    crx_type_t *t1;
     {
         num_t *p1;
         char b[sizeof(*p1)];
         p1 = (void *)b;
         (void)(*p1 << 1);  /* check that 'num_t' is an integer type */
         *p1 = -1;  /* check that 'num_t' is not declared 'const' */
-        void *t = CB__INT_TYPE(*p1, "long");
-        cb->define_type("num_t", t);
+        t1 = CRX_INT_TYPE(cb, *p1, "long");
+        cb->define_type(cb, "num_t", t1);
+#expect TYPEDEF num_t = long
     }
 }
diff --git a/test/codegen/003c.c b/test/codegen/003c.c
--- a/test/codegen/003c.c
+++ b/test/codegen/003c.c
@@ -2,15 +2,17 @@
 
 # ____________________________________________________________
 
-void test003c(creflect_builder_t *cb)
+void test003c(crx_builder_t *cb)
 {
+    crx_type_t *t1;
     {
         num_t *p1;
         char b[sizeof(*p1)];
         p1 = (void *)b;
         (void)(*p1 << 1);  /* check that 'num_t' is an integer type */
         *p1 = -1;  /* check that 'num_t' is not declared 'const' */
-        void *t = CB__INT_TYPE(*p1, "long long");
-        cb->define_type("num_t", t);
+        t1 = CRX_INT_TYPE(cb, *p1, "long long");
+        cb->define_type(cb, "num_t", t1);
+#expect TYPEDEF num_t = long long
     }
 }
diff --git a/test/codegen/003d.c b/test/codegen/003d.c
--- a/test/codegen/003d.c
+++ b/test/codegen/003d.c
@@ -2,15 +2,17 @@
 
 # ____________________________________________________________
 
-void test003d(creflect_builder_t *cb)
+void test003d(crx_builder_t *cb)
 {
+    crx_type_t *t1;
     {
         num_t *p1;
         char b[sizeof(*p1)];
         p1 = (void *)b;
         (void)(*p1 << 1);  /* check that 'num_t' is an integer type */
         *p1 = -1;  /* check that 'num_t' is not declared 'const' */
-        void *t = CB__INT_TYPE(*p1, "char");
-        cb->define_type(cb, "num_t", t);
+        t1 = CRX_INT_TYPE(cb, *p1, "signed char");
+        cb->define_type(cb, "num_t", t1);
+#expect TYPEDEF num_t = signed char
     }
 }
diff --git a/test/codegen/003e.c b/test/codegen/003e.c
--- a/test/codegen/003e.c
+++ b/test/codegen/003e.c
@@ -2,7 +2,7 @@
 
 # ____________________________________________________________
 
-void test003e(crx_self_t *self, crx_builder_t *cb)
+void test003e(crx_builder_t *cb)
 {
     crx_type_t *t1;
     {
@@ -11,9 +11,8 @@
         p1 = (void *)b;
         (void)(*p1 << 1);  /* check that 'num_t' is an integer type */
         *p1 = -1;  /* check that 'num_t' is not declared 'const' */
-        char b2[sizeof(*p1) == 1 ? 1 : -1];  /* check that 'num_t' is a 
single-byte integer */
-        (void)b2;
-        t1 = cb->get_char_type(self);
-        cb->define_type(self, "num_t", t1);
+        t1 = cb->get_char_type(cb);
+        cb->define_type(cb, "num_t", t1);
+#expect TYPEDEF num_t = char
     }
 }
diff --git a/test/codegen/003f.c b/test/codegen/003f.c
--- a/test/codegen/003f.c
+++ b/test/codegen/003f.c
@@ -2,15 +2,17 @@
 
 # ____________________________________________________________
 
-void test003f(creflect_builder_t *cb)
+void test003f(crx_builder_t *cb)
 {
+    crx_type_t *t1;
     {
         num_t *p1;
         char b[sizeof(*p1)];
         p1 = (void *)b;
         (void)(*p1 << 1);  /* check that 'num_t' is an integer type */
         *p1 = -1;  /* check that 'num_t' is not declared 'const' */
-        void *t = CB__INT_TYPE(cb, *p1, "unsigned long long");
-        cb->define_type(cb, "num_t", t);
+        t1 = CRX_INT_TYPE(cb, *p1, "unsigned long long");
+        cb->define_type(cb, "num_t", t1);
+#expect TYPEDEF num_t = unsigned long long
     }
 }
diff --git a/test/codegen/004.c b/test/codegen/004.c
--- a/test/codegen/004.c
+++ b/test/codegen/004.c
@@ -2,8 +2,9 @@
 
 # ____________________________________________________________
 
-void test004(creflect_builder_t *cb)
+void test004(crx_builder_t *cb)
 {
+    crx_type_t *t1, *t2;
     {
         num_t *p1;
         char *p2;
@@ -12,48 +13,9 @@
         *p1 = (void *)b;    /* check that 'num_t' is a pointer type */
         (void)(**p1 << 1);  /* check that '*num_t' is an integer type */
         **p1 = -1;  /* check that '*num_t' is not declared 'const' */
-        void *t;
-        if (*p1 > 0) {
-            if (sizeof(*p1) == 1 && *p1 == 1)
-                t = cb->get_bool_type();
-            else
-                t = cb->get_signed_type(sizeof(*p1), "int");
-        }
-        else {
-            t = cb->get_unsigned_type(sizeof(*p1), "int");
-        }
-        
-        if (**p1 > 0) {
-            if (sizeof(**p1) == 1 && **p1 == 1)
-                r += sprintf(r, "_Bool");
-            else if (sizeof(**p1) == sizeof(unsigned int))
-                r += sprintf(r, "unsigned int");
-            else if (sizeof(**p1) == sizeof(unsigned short))
-                r += sprintf(r, "unsigned short");
-            else if (sizeof(**p1) == sizeof(unsigned char))
-                r += sprintf(r, "unsigned char");
-            else if (sizeof(**p1) == sizeof(unsigned long))
-                r += sprintf(r, "unsigned long");
-            else if (sizeof(**p1) == sizeof(unsigned long long))
-                r += sprintf(r, "unsigned long long");
-            else
-                r += sprintf(r, "uint%u_t", (int)sizeof(**p1) * 8);
-        }
-        else {
-            if (sizeof(**p1) == sizeof(int))
-                r += sprintf(r, "int");
-            else if (sizeof(**p1) == sizeof(short))
-                r += sprintf(r, "short");
-            else if (sizeof(**p1) == sizeof(signed char))
-                r += sprintf(r, "signed char");
-            else if (sizeof(**p1) == sizeof(long))
-                r += sprintf(r, "long");
-            else if (sizeof(**p1) == sizeof(long long))
-                r += sprintf(r, "long long");
-            else
-                r += sprintf(r, "int%u_t", (int)sizeof(**p1) * 8);
-        }
-        r += sprintf(r, " *num_t;\n");
+        t1 = CRX_INT_TYPE(cb, **p1, "int");
+        t2 = cb->get_pointer_type(cb, t1);
+        cb->define_type(cb, "num_t", t2);
+#expect TYPEDEF num_t = PTR int
     }
-    return 0;
 }
diff --git a/test/codegen/004b.c b/test/codegen/004b.c
--- a/test/codegen/004b.c
+++ b/test/codegen/004b.c
@@ -2,10 +2,9 @@
 
 # ____________________________________________________________
 
-int test004b(char *r)
+void test004b(crx_builder_t *cb)
 {
-    if (!r)
-        return 8 + 18 + 11;
+    crx_type_t *t1, *t2, *t3;
     {
         num_t *p1;
         char *p2;
@@ -15,39 +14,11 @@
         *p1 = (void *)&p3;  /* check that 'num_t' is a pointer type */
         **p1 = (void *)b;    /* check that '*num_t' is a pointer type */
         (void)(***p1 << 1);  /* check that '**num_t' is an integer type */
-        r += sprintf(r, "typedef ");
         ***p1 = -1;  /* check that '**num_t' is not declared 'const' */
-        if (***p1 > 0) {
-            if (sizeof(***p1) == 1 && ***p1 == 1)
-                r += sprintf(r, "_Bool");
-            else if (sizeof(***p1) == sizeof(unsigned int))
-                r += sprintf(r, "unsigned int");
-            else if (sizeof(***p1) == sizeof(unsigned short))
-                r += sprintf(r, "unsigned short");
-            else if (sizeof(***p1) == sizeof(unsigned char))
-                r += sprintf(r, "unsigned char");
-            else if (sizeof(***p1) == sizeof(unsigned long))
-                r += sprintf(r, "unsigned long");
-            else if (sizeof(***p1) == sizeof(unsigned long long))
-                r += sprintf(r, "unsigned long long");
-            else
-                r += sprintf(r, "uint%u_t", (int)sizeof(***p1) * 8);
-        }
-        else {
-            if (sizeof(***p1) == sizeof(int))
-                r += sprintf(r, "int");
-            else if (sizeof(***p1) == sizeof(short))
-                r += sprintf(r, "short");
-            else if (sizeof(***p1) == sizeof(signed char))
-                r += sprintf(r, "signed char");
-            else if (sizeof(***p1) == sizeof(long))
-                r += sprintf(r, "long");
-            else if (sizeof(***p1) == sizeof(long long))
-                r += sprintf(r, "long long");
-            else
-                r += sprintf(r, "int%u_t", (int)sizeof(***p1) * 8);
-        }
-        r += sprintf(r, " **num_t;\n");
+        t1 = CRX_INT_TYPE(cb, ***p1, "int");
+        t2 = cb->get_pointer_type(cb, t1);
+        t3 = cb->get_pointer_type(cb, t2);
+        cb->define_type(cb, "num_t", t3);
+#expect TYPEDEF num_t = PTR PTR int
     }
-    return 0;
 }
diff --git a/test/codegen/005.c b/test/codegen/005.c
--- a/test/codegen/005.c
+++ b/test/codegen/005.c
@@ -2,57 +2,22 @@
 
 # ____________________________________________________________
 
-int test005(char *r)
+void test005(crx_builder_t *cb)
 {
-    int r1 = 0;
-    if (!r)
-        return 57 + 8 + 18 + 35;
+    crx_type_t *t1, *t2;
     {
         foo_t *p1;
         char b[sizeof(**p1)];  /* check that 'foo_t[]' is a valid type */
-        char *r0 = r;
         p1 = (void *)b;
         if ((void *)p1 != (void *)*p1) {
-            r = r0;
-            r += sprintf(r, "#error type 'foo_t' is not an array, but a 
pointer type\n");
-            r1 = -1;
-            goto f2;
+            cb->error(cb, "type 'foo_t' is not an array, but a pointer type");
+            return;
         }
         (void)(**p1 << 1);  /* check that 'foo_t[]' is an integer type */
-        r += sprintf(r, "typedef ");
         **p1 = -1;  /* check that 'foo_t[]' is not declared 'const' */
-        if (**p1 > 0) {
-            if (sizeof(**p1) == 1 && **p1 == 1)
-                r += sprintf(r, "_Bool");
-            else if (sizeof(**p1) == sizeof(unsigned int))
-                r += sprintf(r, "unsigned int");
-            else if (sizeof(**p1) == sizeof(unsigned short))
-                r += sprintf(r, "unsigned short");
-            else if (sizeof(**p1) == sizeof(unsigned char))
-                r += sprintf(r, "unsigned char");
-            else if (sizeof(**p1) == sizeof(unsigned long))
-                r += sprintf(r, "unsigned long");
-            else if (sizeof(**p1) == sizeof(unsigned long long))
-                r += sprintf(r, "unsigned long long");
-            else
-                r += sprintf(r, "uint%u_t", (int)sizeof(**p1) * 8);
-        }
-        else {
-            if (sizeof(**p1) == sizeof(int))
-                r += sprintf(r, "int");
-            else if (sizeof(**p1) == sizeof(short))
-                r += sprintf(r, "short");
-            else if (sizeof(**p1) == sizeof(signed char))
-                r += sprintf(r, "signed char");
-            else if (sizeof(**p1) == sizeof(long))
-                r += sprintf(r, "long");
-            else if (sizeof(**p1) == sizeof(long long))
-                r += sprintf(r, "long long");
-            else
-                r += sprintf(r, "int%u_t", (int)sizeof(**p1) * 8);
-        }
-        r += sprintf(r, " foo_t[%lld];\n", (long long)(sizeof(*p1) / 
sizeof(**p1)));
-        f2:;
+        t1 = CRX_INT_TYPE(cb, **p1, "int");
+        t2 = cb->get_array_type(cb, t1, sizeof(*p1) / sizeof(**p1));
+        cb->define_type(cb, "foo_t", t2);
+#expect TYPEDEF foo_t = ARRAY[27] int
     }
-    return r1;
 }
diff --git a/test/codegen/005b.c b/test/codegen/005b.c
--- a/test/codegen/005b.c
+++ b/test/codegen/005b.c
@@ -2,59 +2,25 @@
 
 # ____________________________________________________________
 
-int test005b(char *r)
+void test005b(crx_builder_t *cb)
 {
-    int r1 = 0;
-    if (!r)
-        return 57 + 8 + 18 + 36;
+    crx_type_t *t1, *t2, *t3;
     {
         foo_t *p1;
         char *p3;
-        char *r0 = r;
         char b[sizeof(***p1)];  /* check that '*foo_t[]' is a valid type */
         p1 = (void *)&p3;
         if ((void *)p1 != (void *)*p1) {
-            r = r0;
-            r += sprintf(r, "#error type 'foo_t' is not an array, but a 
pointer type\n");
-            r1 = -1;
-            goto f2;
+            cb->error(cb, "type 'foo_t' is not an array, but a pointer type");
+            return;
         }
         **p1 = (void *)b;    /* check that 'foo_t[]' is a pointer type */
         (void)(***p1 << 1);  /* check that '*foo_t[]' is an integer type */
-        r += sprintf(r, "typedef ");
         ***p1 = -1;  /* check that '*foo_t[]' is not declared 'const' */
-        if (***p1 > 0) {
-            if (sizeof(***p1) == 1 && ***p1 == 1)
-                r += sprintf(r, "_Bool");
-            else if (sizeof(***p1) == sizeof(unsigned int))
-                r += sprintf(r, "unsigned int");
-            else if (sizeof(***p1) == sizeof(unsigned short))
-                r += sprintf(r, "unsigned short");
-            else if (sizeof(***p1) == sizeof(unsigned char))
-                r += sprintf(r, "unsigned char");
-            else if (sizeof(***p1) == sizeof(unsigned long))
-                r += sprintf(r, "unsigned long");
-            else if (sizeof(***p1) == sizeof(unsigned long long))
-                r += sprintf(r, "unsigned long long");
-            else
-                r += sprintf(r, "uint%u_t", (int)sizeof(***p1) * 8);
-        }
-        else {
-            if (sizeof(***p1) == sizeof(int))
-                r += sprintf(r, "int");
-            else if (sizeof(***p1) == sizeof(short))
-                r += sprintf(r, "short");
-            else if (sizeof(***p1) == sizeof(signed char))
-                r += sprintf(r, "signed char");
-            else if (sizeof(***p1) == sizeof(long))
-                r += sprintf(r, "long");
-            else if (sizeof(***p1) == sizeof(long long))
-                r += sprintf(r, "long long");
-            else
-                r += sprintf(r, "int%u_t", (int)sizeof(***p1) * 8);
-        }
-        r += sprintf(r, " *foo_t[%lld];\n", (long long)(sizeof(*p1) / 
sizeof(**p1)));
-        f2:;
+        t1 = CRX_INT_TYPE(cb, ***p1, "int");
+        t2 = cb->get_pointer_type(cb, t1);
+        t3 = cb->get_array_type(cb, t2, sizeof(*p1) / sizeof(**p1));
+        cb->define_type(cb, "foo_t", t3);
+#expect TYPEDEF foo_t = ARRAY[27] PTR int
     }
-    return r1;
 }
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to