Index: src/Parser/TypeData.cpp
===================================================================
--- src/Parser/TypeData.cpp	(revision d1fbc56eb90675715ccf39ca76d45ed759d3cc40)
+++ src/Parser/TypeData.cpp	(revision ad47ec4378fa0d341e9ffb6e548e5ef3ef6c6bcc)
@@ -1540,4 +1540,12 @@
 
 
+// The argument flag (is/is not var-args) of a computed property.
+static ast::ArgumentFlag argumentFlag( const TypeData * td ) {
+	assert( td->kind == TypeData::Function );
+	bool isVaArgs = !td->function.params || td->function.params->hasEllipsis;
+	return (isVaArgs) ? ast::VariableArgs : ast::FixedArgs;
+} // argumentFlag
+
+
 ast::FunctionDecl * buildFunctionDecl(
 		const TypeData * td,
@@ -1549,6 +1557,4 @@
 		std::vector<ast::ptr<ast::Attribute>> && attributes ) {
 	assert( td->kind == TypeData::Function );
-	// For some reason FunctionDecl takes a bool instead of an ArgumentFlag.
-	bool isVarArgs = !td->function.params || td->function.params->hasEllipsis;
 	ast::CV::Qualifiers cvq = buildQualifiers( td );
 	std::vector<ast::ptr<ast::TypeDecl>> forall;
@@ -1604,5 +1610,5 @@
 		std::move( attributes ),
 		funcSpec,
-		(isVarArgs) ? ast::VariableArgs : ast::FixedArgs
+		argumentFlag( td )
 	);
 	buildList( td->function.withExprs, decl->withExprs );
@@ -1656,6 +1662,5 @@
 	assert( td->kind == TypeData::Function );
 	ast::FunctionType * ft = new ast::FunctionType(
-		( !td->function.params || td->function.params->hasEllipsis )
-			? ast::VariableArgs : ast::FixedArgs,
+		argumentFlag( td ),
 		buildQualifiers( td )
 	);
