Index: src/tests/.expect/polymorphism.txt
===================================================================
--- src/tests/.expect/polymorphism.txt	(revision b226721fbecb294b66efe16f98de17dc3e00bbbe)
+++ src/tests/.expect/polymorphism.txt	(revision 598f50e631482d663e6fec6a88a01a10da3968a2)
@@ -1,1 +1,2 @@
 123 456 456
+5 5
Index: src/tests/polymorphism.c
===================================================================
--- src/tests/polymorphism.c	(revision b226721fbecb294b66efe16f98de17dc3e00bbbe)
+++ src/tests/polymorphism.c	(revision 598f50e631482d663e6fec6a88a01a10da3968a2)
@@ -16,14 +16,23 @@
 forall(otype T)
 T f(T x, T y) {
-  x = y;
-  return x;
+	x = y;
+	return x;
+}
+
+forall(otype T) T ident(T x) {
+	return x;
 }
 
 int main() {
-  // ensure that x is not changed by the invocation of a polymorphic function
-  int x = 123;
-  int y = 456;
-  int z = f(x, y);
-  printf("%d %d %d\n", x, y, z);
+	// ensure that x is not changed by the invocation of a polymorphic function
+	int x = 123;
+	int y = 456;
+	int z = f(x, y);
+	printf("%d %d %d\n", x, y, z);
+
+	// explicitly specialize function
+	int (*f)(int) = ident;
+	((int(*)(int))ident);
+	printf("%d %d\n", f(5), ((int(*)(int))ident)(5));
 }
 
