Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision f9a7cf02009d22652a44bc6eb45f9b86af2f2e54)
+++ src/AST/Convert.cpp	(revision 558d13be6924cb43bbc06465ce4a538d053f2d11)
@@ -2191,6 +2191,12 @@
 
 	int isStringlikeConstantType(const Type *t) {
+		const Type *referentType = nullptr;
 		if ( const ArrayType * aty = dynamic_cast< const ArrayType * >( t ) ) {
-			if ( const BasicType * bty = dynamic_cast< const BasicType * >( aty->base ) ) {
+			referentType = aty->base;
+		} else if ( const PointerType * pty = dynamic_cast< const PointerType * >( t ) ) {
+			referentType = pty->base;
+		}
+		if (referentType) {
+			if ( const BasicType * bty = dynamic_cast< const BasicType * >( referentType ) ) {
 			   if ( bty->kind == BasicType::Kind::Char ) {
 				   return true;
@@ -2203,5 +2209,13 @@
 	virtual void visit( ConstantExpr * old ) override final {
 		ast::ConstantExpr *rslt = nullptr;
-		if (isIntlikeConstantType(old->result)) {
+		if (isStringlikeConstantType(old->result)) {
+			rslt = new ast::ConstantExpr(
+				old->location,
+				GET_ACCEPT_1(result, Type),
+				old->constant.get_value(),
+				0,
+				ast::ConstantExpr::Kind::String
+			);
+		} else if (isIntlikeConstantType(old->result)) {
 			rslt = new ast::ConstantExpr(
 				old->location,
@@ -2217,12 +2231,4 @@
 				old->constant.get_value(),
 				(double) old->constant.get_dval()
-			);
-		} else if (isStringlikeConstantType(old->result)) {
-			rslt = new ast::ConstantExpr(
-				old->location,
-				GET_ACCEPT_1(result, Type),
-				old->constant.get_value(),
-				0,
-				ast::ConstantExpr::Kind::String
 			);
 		}
