Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/ResolvExpr/Resolver.cc	(revision b5c5684d38741cc1fee5bb12939570bd0322a24d)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sun May 17 12:17:01 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jun  7 21:50:37 2015
-// Update Count     : 23
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 10 15:32:16 2015
+// Update Count     : 45
 //
 
@@ -272,4 +272,13 @@
 	}
 
+	template< typename T >
+	bool isCharType( T t ) {
+		if ( BasicType * bt = dynamic_cast< BasicType * >( t ) ) {
+			return bt->get_kind() == BasicType::Char || bt->get_kind() == BasicType::SignedChar || 
+				bt->get_kind() == BasicType::UnsignedChar;
+		}
+		return false;
+	}
+
 	void Resolver::visit( SingleInit *singleInit ) {
 		if ( singleInit->get_value() ) {
@@ -296,4 +305,21 @@
 			delete castExpr;
 			singleInit->set_value( newExpr );
+
+			// check if initializing type is char[]
+			if ( ArrayType * at = dynamic_cast< ArrayType * >( initContext ) ) {
+				if ( isCharType( at->get_base() ) ) {
+					// check if the resolved type is char *
+					if ( PointerType * pt = dynamic_cast< PointerType *>( newExpr->get_results().front() ) ) {
+						if ( isCharType( pt->get_base() ) ) {
+							// strip cast if we're initializing a char[] with a char *, e.g.
+							// char x[] = "hello";
+							CastExpr *ce = dynamic_cast< CastExpr * >( newExpr );
+							singleInit->set_value( ce->get_arg() );
+							ce->set_arg( NULL );
+							delete ce;									
+						}
+					}
+				}
+			}
 		} // if
 //	singleInit->get_value()->accept( *this );
@@ -301,5 +327,19 @@
 
 	void Resolver::visit( ListInit *listInit ) {
-		Visitor::visit(listInit);
+		if ( ArrayType * at = dynamic_cast< ArrayType * >( initContext ) ) {
+			std::list< Initializer * >::iterator iter( listInit->begin_initializers() );
+			for ( ; iter != listInit->end_initializers(); ++iter ) {
+				initContext = at->get_base();
+				(*iter)->accept( *this );
+			} // for
+		} else if ( UnionInstType *st = dynamic_cast< UnionInstType * >( initContext ) ) {
+			DeclarationWithType *dt = dynamic_cast< DeclarationWithType * >( *st->get_baseUnion()->get_members().begin() );
+			initContext = dt->get_type();
+			(*listInit->begin_initializers())->accept( *this );
+		} else {
+			// basic types are handled here
+			Visitor::visit( listInit );
+		}
+
 #if 0
 		if ( ArrayType *at = dynamic_cast<ArrayType*>(initContext) ) {
