Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 6259c7ea12741cb20ec6c1feae02936dbff3a188)
+++ src/Parser/DeclarationNode.cc	(revision a46b69c4462f84300e95396a6794ef1a38e56154)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 12 18:35:37 2021
-// Update Count     : 1141
+// Last Modified On : Tue Mar 23 08:44:08 2021
+// Update Count     : 1149
 //
 
@@ -167,21 +167,4 @@
 }
 
-DeclarationNode * DeclarationNode::newFunction( const string * name, DeclarationNode * ret, DeclarationNode * param, StatementNode * body ) {
-	DeclarationNode * newnode = new DeclarationNode;
-	newnode->name = name;
-	newnode->type = new TypeData( TypeData::Function );
-	newnode->type->function.params = param;
-	newnode->type->function.body = body;
-
-	if ( ret ) {
-		newnode->type->base = ret->type;
-		ret->type = nullptr;
-		delete ret;
-	} // if
-
-	return newnode;
-} // DeclarationNode::newFunction
-
-
 DeclarationNode * DeclarationNode::newStorageClass( Type::StorageClasses sc ) {
 	DeclarationNode * newnode = new DeclarationNode;
@@ -237,13 +220,4 @@
 	return newnode;
 } // DeclarationNode::newForall
-
-DeclarationNode * DeclarationNode::newFromTypedef( const string * name ) {
-	DeclarationNode * newnode = new DeclarationNode;
-	newnode->type = new TypeData( TypeData::SymbolicInst );
-	newnode->type->symbolic.name = name;
-	newnode->type->symbolic.isTypedef = true;
-	newnode->type->symbolic.params = nullptr;
-	return newnode;
-} // DeclarationNode::newFromTypedef
 
 DeclarationNode * DeclarationNode::newFromGlobalScope() {
@@ -289,16 +263,25 @@
 } // DeclarationNode::newEnum
 
+DeclarationNode * DeclarationNode::newName( const string * name ) {
+	DeclarationNode * newnode = new DeclarationNode;
+	assert( ! newnode->name );
+	newnode->name = name;
+	return newnode;
+} // DeclarationNode::newName
+
 DeclarationNode * DeclarationNode::newEnumConstant( const string * name, ExpressionNode * constant ) {
-	DeclarationNode * newnode = new DeclarationNode;
-	newnode->name = name;
+	DeclarationNode * newnode = newName( name );
 	newnode->enumeratorValue.reset( constant );
 	return newnode;
 } // DeclarationNode::newEnumConstant
 
-DeclarationNode * DeclarationNode::newName( const string * name ) {
-	DeclarationNode * newnode = new DeclarationNode;
-	newnode->name = name;
-	return newnode;
-} // DeclarationNode::newName
+DeclarationNode * DeclarationNode::newFromTypedef( const string * name ) {
+	DeclarationNode * newnode = new DeclarationNode;
+	newnode->type = new TypeData( TypeData::SymbolicInst );
+	newnode->type->symbolic.name = name;
+	newnode->type->symbolic.isTypedef = true;
+	newnode->type->symbolic.params = nullptr;
+	return newnode;
+} // DeclarationNode::newFromTypedef
 
 DeclarationNode * DeclarationNode::newFromTypeGen( const string * name, ExpressionNode * params ) {
@@ -312,9 +295,6 @@
 
 DeclarationNode * DeclarationNode::newTypeParam( TypeDecl::Kind tc, const string * name ) {
-	DeclarationNode * newnode = new DeclarationNode;
+	DeclarationNode * newnode = newName( name );
 	newnode->type = nullptr;
-	assert( ! newnode->name );
-//	newnode->variable.name = name;
-	newnode->name = name;
 	newnode->variable.tyClass = tc;
 	newnode->variable.assertions = nullptr;
@@ -343,6 +323,5 @@
 
 DeclarationNode * DeclarationNode::newTypeDecl( const string * name, DeclarationNode * typeParams ) {
-	DeclarationNode * newnode = new DeclarationNode;
-	newnode->name = name;
+	DeclarationNode * newnode = newName( name );
 	newnode->type = new TypeData( TypeData::Symbolic );
 	newnode->type->symbolic.isTypedef = false;
@@ -416,4 +395,19 @@
 	return newnode;
 } // DeclarationNode::newBuiltinType
+
+DeclarationNode * DeclarationNode::newFunction( const string * name, DeclarationNode * ret, DeclarationNode * param, StatementNode * body ) {
+	DeclarationNode * newnode = newName( name );
+	newnode->type = new TypeData( TypeData::Function );
+	newnode->type->function.params = param;
+	newnode->type->function.body = body;
+
+	if ( ret ) {
+		newnode->type->base = ret->type;
+		ret->type = nullptr;
+		delete ret;
+	} // if
+
+	return newnode;
+} // DeclarationNode::newFunction
 
 DeclarationNode * DeclarationNode::newAttribute( const string * name, ExpressionNode * expr ) {
@@ -885,10 +879,8 @@
 }
 
-DeclarationNode * DeclarationNode::cloneType( string * newName ) {
-	DeclarationNode * newnode = new DeclarationNode;
+DeclarationNode * DeclarationNode::cloneType( string * name ) {
+	DeclarationNode * newnode = newName( name );
 	newnode->type = maybeClone( type );
 	newnode->copySpecifiers( this );
-	assert( newName );
-	newnode->name = newName;
 	return newnode;
 }
