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