Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision e6cee92975ba3e912a537934e3a775bcddc7a9fa)
+++ src/GenPoly/Box.cc	(revision 795d4506f70255b7275c3eb2195588d82be797eb)
@@ -607,5 +607,5 @@
 						}
 					} else {
-						throw SemanticError( "Cannot pass non-struct type for generic struct" );
+						throw SemanticError( "Cannot pass non-struct type for generic struct: ", argBaseType );
 					}
 				}
@@ -1040,6 +1040,9 @@
 							// remove dereference from polymorphic types since they are boxed.
 							Expression *ret = appExpr->get_args().front();
+							// fix expr type to remove reference
 							delete ret->get_result();
-							ret->set_result( appExpr->get_result()->clone() );
+							Type * baseType = InitTweak::getPointerBase( appExpr->get_result() );
+							assert( baseType );
+							ret->set_result( baseType->clone() );
 							if ( appExpr->get_env() ) {
 								ret->set_env( appExpr->get_env() );
