Index: src/Concurrency/Keywords.cc
===================================================================
--- src/Concurrency/Keywords.cc	(revision 1f81d61c0a8d53662c51e645fbbb076881fd849c)
+++ src/Concurrency/Keywords.cc	(revision db4d8e3f8b8d886886b38830044410b6a1694da5)
@@ -191,5 +191,5 @@
 		void postvisit(   StructDecl * decl );
 
-		std::list<DeclarationWithType*> findMutexArgs( FunctionDecl* );
+		std::list<DeclarationWithType*> findMutexArgs( FunctionDecl*, bool & first );
 		void validate( DeclarationWithType * );
 		void addDtorStatments( FunctionDecl* func, CompoundStmt *, const std::list<DeclarationWithType * > &);
@@ -441,8 +441,9 @@
 	void MutexKeyword::postvisit(FunctionDecl* decl) {
 
-		std::list<DeclarationWithType*> mutexArgs = findMutexArgs( decl );
+		bool first = false;
+		std::list<DeclarationWithType*> mutexArgs = findMutexArgs( decl, first );
 		if( mutexArgs.empty() ) return;
 
-		if( CodeGen::isConstructor(decl->name) ) SemanticError( decl, "constructors cannot have mutex parameters" );
+		if( CodeGen::isConstructor(decl->name) && first ) SemanticError( decl, "constructors cannot have mutex parameters" );
 
 		bool isDtor = CodeGen::isDestructor( decl->name );
@@ -484,11 +485,15 @@
 	}
 
-	std::list<DeclarationWithType*> MutexKeyword::findMutexArgs( FunctionDecl* decl ) {
+	std::list<DeclarationWithType*> MutexKeyword::findMutexArgs( FunctionDecl* decl, bool & first ) {
 		std::list<DeclarationWithType*> mutexArgs;
 
+		bool once = true;
 		for( auto arg : decl->get_functionType()->get_parameters()) {
 			//Find mutex arguments
 			Type* ty = arg->get_type();
 			if( ! ty->get_mutex() ) continue;
+
+			if(once) {first = true;}
+			once = false;
 
 			//Append it to the list
