Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision 120a28c324be16903293aacaf7b99c7f3b9c6f84)
+++ src/AST/Convert.cpp	(revision 8b34df032b958bfd4e1d59e5d6573aa153bd4015)
@@ -576,6 +576,6 @@
 		if ( srcInferred.mode == ast::Expr::InferUnion::Params ) {
 			const ast::InferredParams &srcParams = srcInferred.inferParams();
-			for (auto srcParam : srcParams) {
-				tgtInferParams[srcParam.first] = ParamEntry(
+			for (auto & srcParam : srcParams) {
+				auto res = tgtInferParams.emplace(srcParam.first, ParamEntry(
 					srcParam.second.decl,
 					get<Declaration>().accept1(srcParam.second.declptr),
@@ -583,5 +583,6 @@
 					get<Type>().accept1(srcParam.second.formalType),
 					get<Expression>().accept1(srcParam.second.expr)
-				);
+				));
+				assert(res.second);
 			}
 		} else if ( srcInferred.mode == ast::Expr::InferUnion::Slots  ) {
@@ -2002,5 +2003,5 @@
 		if ( !oldInferParams.empty() ) {
 			ast::InferredParams &tgt = newInferred.inferParams();
-			for (auto old : oldInferParams) {
+			for (auto & old : oldInferParams) {
 				tgt[old.first] = ast::ParamEntry(
 					old.second.decl,
