Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision ea2ed3a396baffcc049261f91efc9ed019b9202d)
+++ src/GenPoly/Box.cc	(revision 8d9d97467f621ca8bca5ac909252ee5506e74ea0)
@@ -424,6 +424,4 @@
 	namespace {
 		std::string makePolyMonoSuffix( FunctionType const * function, const TyVarMap &tyVars ) {
-			std::stringstream name;
-
 			// NOTE: this function previously used isPolyObj, which failed to produce
 			// the correct thing in some situations. It's not clear to me why this wasn't working.
@@ -432,19 +430,12 @@
 			// to take those polymorphic types as pointers. Therefore, there can be two different functions
 			// with the same mangled name, so we need to further mangle the names.
+			std::stringstream name;
 			for ( DeclarationWithType const * const ret : function->returnVals ) {
-				if ( isPolyType( ret->get_type(), tyVars ) ) {
-					name << "P";
-				} else {
-					name << "M";
-				}
-			}
-			name << "_";
+				name << ( isPolyType( ret->get_type(), tyVars ) ? 'P' : 'M' );
+			}
+			name << '_';
 			for ( DeclarationWithType const * const arg : function->parameters ) {
-				if ( isPolyType( arg->get_type(), tyVars ) ) {
-					name << "P";
-				} else {
-					name << "M";
-				}
-			} // for
+				name << ( isPolyType( arg->get_type(), tyVars ) ? 'P' : 'M' );
+			}
 			return name.str();
 		}
