Index: src/Parser/ExpressionNode.cpp
===================================================================
--- src/Parser/ExpressionNode.cpp	(revision 3e91c6f91e5a3f8b46dfbdd035a898ca5dfe818f)
+++ src/Parser/ExpressionNode.cpp	(revision fc8ec54edf06f75aaa375fdcd95505d3838f134d)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Dec 16 20:50:27 2024
-// Update Count     : 1110
+// Last Modified On : Mon Mar 31 12:08:13 2025
+// Update Count     : 1121
 //
 
@@ -443,25 +443,28 @@
 } // sepString
 
-ast::Expr * build_constantChar( const CodeLocation & location, string & str ) {
-	string units;										// units
-	sepString( str, units, '\'' );						// separate constant from units
-
-	ast::Expr * ret = new ast::ConstantExpr( location,
-		new ast::BasicType( ast::BasicKind::Char ),
-		str,
-		(unsigned long long int)(unsigned char)str[1] );
-	if ( units.length() != 0 ) {
-		ret = new ast::UntypedExpr( location,
-			new ast::NameExpr( location, units ),
-			{ ret } );
-	} // if
-
-	delete &str;										// created by lex
-	return ret;
-} // build_constantChar
+static ast::Type * charstrKind( string & str ) {
+	ast::Type * kind;
+	switch ( str[0] ) {									// str has >= 2 characters, i.e, null string "" => safe to look at subscripts 0/1
+	case 'u':
+		if ( str[1] == '8' ) goto Default;				// utf-8 characters => array of char (save check for char as no 8 allowed)
+		// lookup type of associated typedef
+		kind = new ast::TypeInstType( "char16_t", ast::TypeDecl::Dtype );
+		break;
+	case 'U':
+		kind = new ast::TypeInstType( "char32_t", ast::TypeDecl::Dtype );
+		break;
+	case 'L':
+		kind = new ast::TypeInstType( "wchar_t", ast::TypeDecl::Dtype );
+		break;
+	Default:											// char default string type
+	default:
+		kind = new ast::BasicType( ast::BasicKind::Char );
+	} // switch
+	return kind;
+} // charstrKind
 
 static bool isoctal( char ch ) {
 	return ('0' <= ch && ch <= '7');
-}
+} // isoctal
 
 // A "sequence" is the series of characters in a character/string literal that becomes a single
@@ -498,5 +501,18 @@
 		return 1;
 	} // switch
-}
+} // sequenceLength
+
+ast::Expr * build_constantChar( const CodeLocation & location, string & str ) {
+	string units;										// units
+	sepString( str, units, '\'' );						// separate constant from units
+
+	ast::Expr * ret = new ast::ConstantExpr( location, charstrKind( str ), str, (unsigned long long int)(unsigned char)str[1] );
+	if ( units.length() != 0 ) {
+		ret = new ast::UntypedExpr( location, new ast::NameExpr( location, units ),	{ ret } );
+	} // if
+
+	delete &str;										// created by lex
+	return ret;
+} // build_constantChar
 
 ast::Expr * build_constantStr( const CodeLocation & location, string & str ) {
@@ -504,22 +520,4 @@
 	string units;										// units
 	sepString( str, units, '"' );						// separate constant from units
-
-	ast::Type * strtype;
-	switch ( str[0] ) {									// str has >= 2 characters, i.e, null string "" => safe to look at subscripts 0/1
-	case 'u':
-		if ( str[1] == '8' ) goto Default;				// utf-8 characters => array of char
-		// lookup type of associated typedef
-		strtype = new ast::TypeInstType( "char16_t", ast::TypeDecl::Dtype );
-		break;
-	case 'U':
-		strtype = new ast::TypeInstType( "char32_t", ast::TypeDecl::Dtype );
-		break;
-	case 'L':
-		strtype = new ast::TypeInstType( "wchar_t", ast::TypeDecl::Dtype );
-		break;
-	Default:											// char default string type
-	default:
-		strtype = new ast::BasicType( ast::BasicKind::Char );
-	} // switch
 
 	// The length value of the type is equal to the number of "sequences" not including the openning
@@ -536,9 +534,5 @@
 	} // for
 
-	ast::ArrayType * at = new ast::ArrayType(
-		strtype,
-		ast::ConstantExpr::from_ulong( location, length ),
-		ast::FixedLen,
-		ast::DynamicDim );
+	ast::ArrayType * at = new ast::ArrayType( charstrKind( str ), ast::ConstantExpr::from_ulong( location, length ), ast::FixedLen, ast::DynamicDim );
 	ast::Expr * ret = new ast::ConstantExpr( location, at, str, std::nullopt );
 	if ( units.length() != 0 ) {
