Index: src/Parser/TypeData.cpp
===================================================================
--- src/Parser/TypeData.cpp	(revision b965774280e397e9cac5719c5a8ca3942ad5d92d)
+++ src/Parser/TypeData.cpp	(revision 29c8675099308007aaa5be2a10db2bc13c6dbca7)
@@ -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 29c8675099308007aaa5be2a10db2bc13c6dbca7)
@@ -2889,5 +2889,5 @@
 parameter_list_ellipsis_opt:
 	// empty
-		{ $$ = nullptr; }
+		{ $$ = DeclarationNode::newFromTypeData( build_basic_type( TypeData::Void ) ); }
 	| ELLIPSIS
 		{ $$ = nullptr; }
