Index: src/CodeGen/CodeGenerator.cpp
===================================================================
--- src/CodeGen/CodeGenerator.cpp	(revision b965774280e397e9cac5719c5a8ca3942ad5d92d)
+++ src/CodeGen/CodeGenerator.cpp	(revision 737bf737154ccbbd457126f5c3fe477216ece460)
@@ -180,8 +180,10 @@
 
 	if ( 0 == decl->params.size() ) {
-		if ( decl->type->isVarArgs ) {
+		if ( !decl->type->isVarArgs ) {
+			acc << "(void)";
+		} else if ( options.genC ) {
 			acc << "()";
 		} else {
-			acc << "(void)";
+			acc << "(...)";
 		}
 	} else {
Index: src/CodeGen/GenType.cpp
===================================================================
--- src/CodeGen/GenType.cpp	(revision b965774280e397e9cac5719c5a8ca3942ad5d92d)
+++ src/CodeGen/GenType.cpp	(revision 737bf737154ccbbd457126f5c3fe477216ece460)
@@ -168,8 +168,10 @@
 
 	if ( type->params.empty() ) {
-		if ( type->isVarArgs ) {
+		if ( !type->isVarArgs ) {
+			os << "(void)";
+		} else if ( options.genC ) {
 			os << "()";
 		} else {
-			os << "(void)";
+			os << "(...)";
 		}
 	} else {
Index: src/Concurrency/Keywords.cpp
===================================================================
--- src/Concurrency/Keywords.cpp	(revision b965774280e397e9cac5719c5a8ca3942ad5d92d)
+++ src/Concurrency/Keywords.cpp	(revision 737bf737154ccbbd457126f5c3fe477216ece460)
@@ -1510,5 +1510,5 @@
 
 ast::ptr<ast::Type> MutexKeyword::generic_func =
-	new ast::FunctionType( ast::VariableArgs );
+	new ast::FunctionType( ast::FixedArgs );
 
 // --------------------------------------------------------------------------
Index: src/Concurrency/Waitfor.cpp
===================================================================
--- src/Concurrency/Waitfor.cpp	(revision b965774280e397e9cac5719c5a8ca3942ad5d92d)
+++ src/Concurrency/Waitfor.cpp	(revision 737bf737154ccbbd457126f5c3fe477216ece460)
@@ -302,5 +302,5 @@
 	const ast::ObjectDecl * monitors = declMonitors( out, clause );
 	ast::Type * fptr_t = new ast::PointerType(
-			new ast::FunctionType( ast::VariableArgs ) );
+			new ast::FunctionType( ast::FixedArgs ) );
 
 	const ast::VariableExpr * variableExpr =
Index: src/Parser/TypeData.cpp
===================================================================
--- src/Parser/TypeData.cpp	(revision b965774280e397e9cac5719c5a8ca3942ad5d92d)
+++ src/Parser/TypeData.cpp	(revision 737bf737154ccbbd457126f5c3fe477216ece460)
@@ -1541,9 +1541,19 @@
 
 // The argument flag (is/is not var-args) of a computed property.
-static ast::ArgumentFlag argumentFlag( const TypeData * td ) {
+static ast::ArgumentFlag buildArgumentFlag( const TypeData * td ) {
 	assert( td->kind == TypeData::Function );
-	bool isVaArgs = !td->function.params || td->function.params->hasEllipsis;
-	return (isVaArgs) ? ast::VariableArgs : ast::FixedArgs;
-} // argumentFlag
+	bool isVarArgs = !td->function.params || td->function.params->hasEllipsis;
+	return (isVarArgs) ? ast::VariableArgs : ast::FixedArgs;
+}
+
+
+// Wrapper to convert the void parameter into the empty explicit list.
+static void buildParamList( DeclarationNode * decl,
+		std::vector<ast::ptr<ast::DeclWithType>> & params ) {
+	buildList( decl, params );
+	if ( 1 == params.size() && params[0]->get_type()->isVoid() ) {
+		params.pop_back();
+	}
+}
 
 
@@ -1562,5 +1572,5 @@
 	std::vector<ast::ptr<ast::DeclWithType>> params;
 	std::vector<ast::ptr<ast::DeclWithType>> returns;
-	buildList( td->function.params, params );
+	buildParamList( td->function.params, params );
 	buildForall( td->forall, forall );
 	// Functions do not store their assertions there anymore.
@@ -1610,5 +1620,5 @@
 		std::move( attributes ),
 		funcSpec,
-		argumentFlag( td )
+		buildArgumentFlag( td )
 	);
 	buildList( td->function.withExprs, decl->withExprs );
@@ -1662,5 +1672,5 @@
 	assert( td->kind == TypeData::Function );
 	ast::FunctionType * ft = new ast::FunctionType(
-		argumentFlag( td ),
+		buildArgumentFlag( td ),
 		buildQualifiers( td )
 	);
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision b965774280e397e9cac5719c5a8ca3942ad5d92d)
+++ src/Parser/parser.yy	(revision 737bf737154ccbbd457126f5c3fe477216ece460)
@@ -2889,5 +2889,5 @@
 parameter_list_ellipsis_opt:
 	// empty
-		{ $$ = nullptr; }
+		{ $$ = DeclarationNode::newFromTypeData( build_basic_type( TypeData::Void ) ); }
 	| ELLIPSIS
 		{ $$ = nullptr; }
