diff --git a/test/compiler/Makefile b/test/compiler/Makefile
index a09e4d8883ef92515cd2ea092618a5981401a71a..40f38f85d1d6f00608b7cbe2a27baff535279996 100644
--- a/test/compiler/Makefile
+++ b/test/compiler/Makefile
@@ -20,6 +20,7 @@ TESTSCRIPTS_HOST += snc_test.t
 #TESTSCRIPTS_HOST += build64_test.t
 #TESTSCRIPTS_CROSS += build64_test.t
 
+TESTPROD_HOST += type_expr
 TESTPROD_HOST += funcdef
 
 PROD_LIBS += seq pv
diff --git a/test/compiler/snc_test.plt b/test/compiler/snc_test.plt
index b148d0528cd2731524c9a891f937209fcb564bf5..7335cc016bcfa0517fddddee10776a250aed19ba 100644
--- a/test/compiler/snc_test.plt
+++ b/test/compiler/snc_test.plt
@@ -14,6 +14,7 @@ my $success = {
   subscript => 0,
   sync_not_monitored => 0,
   syncq_not_monitored => 0,
+  type_expr => 0,
 };
 
 my $warning = {
diff --git a/test/compiler/type_expr.st b/test/compiler/type_expr.st
new file mode 100644
index 0000000000000000000000000000000000000000..fa2415b06c80afccf1a53a15d2a80e4b6e29e708
--- /dev/null
+++ b/test/compiler/type_expr.st
@@ -0,0 +1,64 @@
+/*************************************************************************\
+Copyright (c) 2013      Helmholtz-Zentrum Berlin f. Materialien
+                        und Energie GmbH, Germany (HZB)
+This file is distributed subject to a Software License Agreement found
+in the file LICENSE that is included with this distribution.
+\*************************************************************************/
+program type_exprTest
+
+option +r;
+
+#if 0
+    void f(
+        void *p,
+        void **pp,
+        void (*pf1)(void),
+        void (*pf2)(int x,int),
+        void (*pf3)(int*),
+        void (*pf4)(int**),
+        void (*pf5)(double**,int),
+        void (*pf6)(double**,int(**)[2]),
+        double **pd,
+        double **ppd
+    );
+#endif
+
+entry {
+    long n = 0;
+    void *p = (void *)n;
+    void **pp = (void**)n;
+    void (*pf1)(void) = (void (*)(void))n;
+    void (*pf2)(int x,int) = (void (*)(int,int))n;
+    void (*pf3)(int*) = (void (*)(int*))n;
+    void (*pf4)(int**) = (void (*)(int**))n;
+    void (*pf5)(double**,int) = (void (*)(double**,int))n;
+    void (*pf6)(double**,int(**)[2]) = (void (*)(double**,int(**)[2]))n;
+    double **pd = (double**)(int*)n;
+    double **ppd = (double**)(int(*)[3])n;
+    void (*lf)(
+        void *p,
+        void **pp,
+        void (*pf1)(void),
+        void (*pf2)(int x,int),
+        void (*pf3)(int*),
+        void (*pf4)(int**),
+        void (*pf5)(double**,int),
+        void (*pf6)(double**,int(**)[2]),
+        double **pd,
+        double **ppd
+    ) = (void (*)(
+        void *p,
+        void **pp,
+        void (*pf1)(void),
+        void (*pf2)(int x,int),
+        void (*pf3)(int*),
+        void (*pf4)(int**),
+        void (*pf5)(double**,int),
+        void (*pf6)(double**,int(**)[2]),
+        double **pd,
+        double **ppd
+    ))n;
+    lf(p,pp,pf1,pf2,pf3,pf4,pf5,pf6,pd,ppd);
+}
+
+#include "../simple.st"