Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision 6e3e0717ec56c7a045d8552c013dee38b13461c4)
+++ src/AST/Convert.cpp	(revision aaeacf4b17e26df880b846210c264be0d6cc771b)
@@ -579,4 +579,5 @@
 				tgtInferParams[srcParam.first] = ParamEntry(
 					srcParam.second.decl,
+					get<Declaration>().accept1(srcParam.second.declptr),
 					get<Type>().accept1(srcParam.second.actualType),
 					get<Type>().accept1(srcParam.second.formalType),
@@ -2004,4 +2005,5 @@
 				tgt[old.first] = ast::ParamEntry(
 					old.second.decl,
+					getAccept1<ast::Decl>(old.second.declptr),
 					getAccept1<ast::Type>(old.second.actualType),
 					getAccept1<ast::Type>(old.second.formalType),
Index: src/AST/Expr.hpp
===================================================================
--- src/AST/Expr.hpp	(revision 6e3e0717ec56c7a045d8552c013dee38b13461c4)
+++ src/AST/Expr.hpp	(revision aaeacf4b17e26df880b846210c264be0d6cc771b)
@@ -39,11 +39,12 @@
 struct ParamEntry {
 	UniqueId decl;
+	ptr<Decl> declptr;
 	ptr<Type> actualType;
 	ptr<Type> formalType;
 	ptr<Expr> expr;
 
-	ParamEntry() : decl( 0 ), actualType( nullptr ), formalType( nullptr ), expr( nullptr ) {}
-	ParamEntry( UniqueId id, Type* actual, Type* formal, Expr* e )
-	: decl( id ), actualType( actual ), formalType( formal ), expr( e ) {}
+	ParamEntry() : decl( 0 ), declptr( nullptr ), actualType( nullptr ), formalType( nullptr ), expr( nullptr ) {}
+	ParamEntry( UniqueId id, Decl * declptr, Type* actual, Type* formal, Expr* e )
+	: decl( id ), declptr( declptr ), actualType( actual ), formalType( formal ), expr( e ) {}
 };
 
@@ -137,5 +138,5 @@
 		}
 
-		/// splices other InferUnion into this one. Will fail if one union is in `Slots` mode 
+		/// splices other InferUnion into this one. Will fail if one union is in `Slots` mode
 		/// and the other is in `Params`.
 		void splice( InferUnion && o ) {
@@ -145,5 +146,5 @@
 
 			if ( mode == Slots ){
-				data.resnSlots.insert( 
+				data.resnSlots.insert(
 					data.resnSlots.end(), o.data.resnSlots.begin(), o.data.resnSlots.end() );
 			} else if ( mode == Params ) {
