Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 446740ab0247d38a59cdaee9ed6c481ffa321079)
+++ src/Parser/DeclarationNode.cc	(revision 223b6311b126e3205bfc3697b580ef3bf4e6ac94)
@@ -296,9 +296,5 @@
 	newnode->type->array.dimension = size;
 	newnode->type->array.isStatic = isStatic;
-	if ( newnode->type->array.dimension == nullptr || newnode->type->array.dimension->isExpressionType<ast::ConstantExpr *>() ) {
-		newnode->type->array.isVarLen = false;
-	} else {
-		newnode->type->array.isVarLen = true;
-	} // if
+	newnode->type->array.isVarLen = size && !size->isExpressionType<ast::ConstantExpr *>();
 	return newnode->addQualifiers( qualifiers );
 } // DeclarationNode::newArray
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 446740ab0247d38a59cdaee9ed6c481ffa321079)
+++ src/Parser/TypeData.cc	(revision 223b6311b126e3205bfc3697b580ef3bf4e6ac94)
@@ -1291,58 +1291,33 @@
 
 
+static ast::Type * buildDefaultType( const TypeData * td ) {
+	return ( td ) ? typebuild( td ) : new ast::BasicType( ast::BasicType::SignedInt );
+} // buildDefaultType
+
+
 ast::PointerType * buildPointer( const TypeData * td ) {
-	ast::PointerType * pt;
-	if ( td->base ) {
-		pt = new ast::PointerType(
-			typebuild( td->base ),
-			buildQualifiers( td )
-		);
-	} else {
-		pt = new ast::PointerType(
-			new ast::BasicType( ast::BasicType::SignedInt ),
-			buildQualifiers( td )
-		);
-	} // if
-	return pt;
+	return new ast::PointerType(
+		buildDefaultType( td->base ),
+		buildQualifiers( td )
+	);
 } // buildPointer
 
 
 ast::ArrayType * buildArray( const TypeData * td ) {
-	ast::ArrayType * at;
-	if ( td->base ) {
-		at = new ast::ArrayType(
-			typebuild( td->base ),
-			maybeBuild( td->array.dimension ),
-			td->array.isVarLen ? ast::VariableLen : ast::FixedLen,
-			td->array.isStatic ? ast::StaticDim : ast::DynamicDim,
-			buildQualifiers( td )
-		);
-	} else {
-		at = new ast::ArrayType(
-			new ast::BasicType( ast::BasicType::SignedInt ),
-			maybeBuild( td->array.dimension ),
-			td->array.isVarLen ? ast::VariableLen : ast::FixedLen,
-			td->array.isStatic ? ast::StaticDim : ast::DynamicDim,
-			buildQualifiers( td )
-		);
-	} // if
-	return at;
+	return new ast::ArrayType(
+		buildDefaultType( td->base ),
+		maybeBuild( td->array.dimension ),
+		td->array.isVarLen ? ast::VariableLen : ast::FixedLen,
+		td->array.isStatic ? ast::StaticDim : ast::DynamicDim,
+		buildQualifiers( td )
+	);
 } // buildArray
 
 
 ast::ReferenceType * buildReference( const TypeData * td ) {
-	ast::ReferenceType * rt;
-	if ( td->base ) {
-		rt = new ast::ReferenceType(
-			typebuild( td->base ),
-			buildQualifiers( td )
-		);
-	} else {
-		rt = new ast::ReferenceType(
-			new ast::BasicType( ast::BasicType::SignedInt ),
-			buildQualifiers( td )
-		);
-	} // if
-	return rt;
+	return new ast::ReferenceType(
+		buildDefaultType( td->base ),
+		buildQualifiers( td )
+	);
 } // buildReference
 
