Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision d286cf68892dfb231fb65f0127f47f3d593ac9f1)
+++ src/ResolvExpr/Resolver.cc	(revision a1cfa0ce6a2f9c017b6a8df1d36fb3052c4c8b8c)
@@ -583,5 +583,5 @@
 							// Make sure we don't widen any existing bindings
 							resultEnv.forbidWidening();
-							
+
 							// Find any unbound type variables
 							resultEnv.extractOpenVars( openVars );
@@ -590,5 +590,5 @@
 							auto param_end = function->parameters.end();
 
-							int n_mutex_arg = 0;
+							int n_mutex_param = 0;
 
 							// For every arguments of its set, check if it matches one of the parameter
@@ -600,8 +600,8 @@
 									// We ran out of parameters but still have arguments
 									// this function doesn't match
-									SemanticError( function, toString("candidate function not viable: too many mutex arguments, expected ", n_mutex_arg, "\n" ));
+									SemanticError( function, toString("candidate function not viable: too many mutex arguments, expected ", n_mutex_param, "\n" ));
 								}
 
-								n_mutex_arg++;
+								n_mutex_param++;
 
 								// Check if the argument matches the parameter type in the current scope
@@ -626,7 +626,12 @@
 							// Check if parameters are missing
 							if( advance_to_mutex( param, param_end ) ) {
+								do {
+									n_mutex_param++;
+									param++;
+								} while( advance_to_mutex( param, param_end ) );
+
 								// We ran out of arguments but still have parameters left
 								// this function doesn't match
-								SemanticError( function, toString("candidate function not viable: too few mutex arguments, expected ", n_mutex_arg, "\n" ));
+								SemanticError( function, toString("candidate function not viable: too few mutex arguments, expected ", n_mutex_param, "\n" ));
 							}
 
