Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision 3251b66d2af6556bfddea750ab342e114cfd355b)
+++ src/AST/Print.cpp	(revision 79c907b3dd4f1e64c8f06407b0c85f76635c1767)
@@ -128,23 +128,18 @@
 
 	void print( const ast::Expr::InferUnion & inferred, unsigned level = 0 ) {
-		switch ( inferred.mode ) {
-		case ast::Expr::InferUnion::Empty: return;
-		case ast::Expr::InferUnion::Slots: {
-			os << indent << "with " << inferred.data.resnSlots.size()
+		if (inferred.data.resnSlots && !inferred.data.resnSlots->empty()) {
+			os << indent << "with " << inferred.data.resnSlots->size()
 			   << " pending inference slots" << endl;
-			return;
-		}
-		case ast::Expr::InferUnion::Params: {
+		}
+		if (inferred.data.inferParams && !inferred.data.inferParams->empty()) {
 			os << indent << "with inferred parameters " << level << ":" << endl;
 			++indent;
-			for ( const auto & i : inferred.data.inferParams ) {
+			for ( const auto & i : *inferred.data.inferParams ) {
 				os << indent;
-				short_print( Decl::fromId( i.second.decl ) );
+				short_print( i.second.declptr );
 				os << endl;
 				print( i.second.expr->inferred, level+1 );
 			}
 			--indent;
-			return;
-		}
 		}
 	}
@@ -232,5 +227,5 @@
 		}
 
-		if ( ! short_mode && ! node->assertions.empty() ) {
+		if ( ! node->assertions.empty() ) {
 			os << endl << indent << "... with assertions" << endl;
 			++indent;
