summary refs log tree commit diff stats
path: root/rod/c2nim/tests/systest.c
diff options
context:
space:
mode:
Diffstat (limited to 'rod/c2nim/tests/systest.c')
-rw-r--r--rod/c2nim/tests/systest.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/rod/c2nim/tests/systest.c b/rod/c2nim/tests/systest.c
index 2d195ec0f..b2b7646bb 100644
--- a/rod/c2nim/tests/systest.c
+++ b/rod/c2nim/tests/systest.c
@@ -9,6 +9,66 @@ extern "C" {
 #  endif
 #endif
 
+void* x;
+void* fn(void);
+void (*fn)(void);
+void* (*fn)(void);
+void* (*fn)(void*);
+
+/*

+ * Very ugly real world code ahead:

+ */

+
+#def JMETHOD(rettype, name, params) rettype (*name) params
+

+typedef struct cjpeg_source_struct * cjpeg_source_ptr;

+

+struct cjpeg_source_struct {

+  JMETHOD(void, start_input, (j_compress_ptr cinfo,

+			      cjpeg_source_ptr sinfo));

+  JMETHOD(JDIMENSION, get_pixel_rows, (j_compress_ptr cinfo,

+				       cjpeg_source_ptr sinfo));

+  JMETHOD(void, finish_input, (j_compress_ptr cinfo,

+			       cjpeg_source_ptr sinfo));

+

+  FILE *input_file;

+

+  JSAMPARRAY buffer;

+  JDIMENSION buffer_height;

+};
+
+// Test standalone structs: 
+
+union myunion {
+  char x, y, *z;
+  myint a, b;  
+} u;
+
+struct mystruct {
+  char x, y, *z;
+  myint a, b;
+}; 
+
+struct mystruct fn(i32 x, i64 y);
+
+struct mystruct {
+  char x, y, *z;
+  myint a, b;
+} *myvar = NULL, **myvar2 = NULL; 
+
+// anonymous struct: 
+
+struct {
+  char x, y, *z;
+  myint a, b;  
+} varX, **varY;
+
+// empty anonymous struct: 
+
+struct {
+
+} varX, **varY;
+
 // Test C2NIM skipping:
 
 #define MASK(x) ((x) & 0xff)